2015-09-14 128 views
0

我正在編寫一個程序來逐行讀取文本文件,將行值存儲在一個向量中,執行一些處理然後寫回新的文本文件。這是文本文件通常是這樣的:C++簡單的方法來忽略輸入的第一個字

enter image description here

正如你可以看到,有兩列:一個用於幀號,另一個是時間。我想要的只是第二列(又名時間)。文本文件中可能有數百個,如果不是數千行。以前我一直在手動刪除幀號列,我寧願不要這樣做。所以我的問題是:是否有一種簡單的方法來編輯我的當前代碼,以便當我用getline()讀取文件時,它跳過第一個單詞並只獲得第二個單詞?這是我用來閱讀文本文件的代碼。謝謝

ifstream sysfile(sys_time_dir); 

//Store lines in a vector 
vector<string> sys_times; 
string textline; 

while (getline(sysfile, textline)) 
{ 
    sys_times.push_back(textline); 
} 

回答

2
std::string ignore_me; 
while (sysfile >> ignore_me, getline(sysfile, textline)) { 
... 

這利用逗號運算符,讀取所述第一個字(這裏定義「字」作爲非空格字符的連續序列)的線的,但是忽略了結果,則使用getline到閱讀該行的其餘部分。

請注意,對於您描述的特定數據格式,我寧願選擇RSahu在答案中顯示的內容。我的回答是更通用的問題「跳過第一個字,並閱讀其餘行」

+1

在這裏使用逗號而不是'&&'有什麼好處? – molbdnilo

+0

@molbdnilo:沒有。除了主觀上進一步澄清,我不關心第一次手術的成功。另外,對於像我這樣的人來說,他有時會查找運算符優先級,至少我總是會記得逗號運算符是最低優先級。 –

+0

謝謝!運行良好 – oodan123

5

由於每行有兩個數字,您可以讀取兩個數字並忽略第一個數字。

vector<double> sys_times; 
int first; 
double second; 
while (sysfile >> first >> second) 
{ 
    sys_times.push_back(second); 
} 
+0

感謝您的回答!你的工作很好,但不幸的是,我不能接受2個答案 – oodan123

+0

@ oodan123,根本不是問題。 –

相關問題