2016-02-25 67 views
0

CSV文件我有每行的以下信息csv文件:如何閱讀與C++

John,Doe,17 

的ifstream的對象名稱是INFILE,我嘗試:

string firstName; 
string lastName; 
int age; 
inFile >> firstName >> "," >> lastName >> "," >> age 

然而,清楚,我做不到>> "," >>

如何正確獲取這些值並使用它們?

謝謝。

回答

0

您需要使用stringstream並使用逗號作爲分隔符將每行讀入流中。 參見:this question and its answer

+0

事情是我的第一行是頭,如「第一,最後,年齡」,我怎麼會考慮到不讀那行? –

+0

跳過第一行怎麼樣? –

+0

我在回答問題時猶豫不決,因爲我覺得這對於試驗和解決手頭問題更有好處,提供了一些指導,而不是提供關於如何操作的逐步指導。就這一點而言,關於跳過一條線,當你閱讀它時(線索),你不必對線做任何事情。 –

1

你可以這樣做。

string firstName; 
string lastName; 
int age; 
getline(inFile, firstName, ','); 
getline(inFile, lastName, ','); 
inFile >> age; 

如果你想保持一致,你可以使用函數getline(INFILE,..., '')的所有數據,然後使用std :: Stoi旅館年齡轉換爲整數。或者你可以使用getline(inFile,wholeline),然後在整行上使用sscanf。

+0

string tempVariable; getline(inFile,tempVariable); string firstName; string lastName; char逗號; 浮動年齡; while(inFile >> firstName >> comma >> lastName >> comma >> age { 你知道爲什麼它永遠不會進入這個循環嗎?我用getline()跳過第一行 –

+0

'inFile >> firstName >> dummy >> lastName >> dummy >> age;' - 這不起作用 - ''std :: string'消耗輸入直到下一個空白字符或流結束,所以''「 John,Doe,17「'in'firstName'。 –

+0

@ D.Lin啊我沒有注意到你在逗號前沒有空格。 –