2012-06-03 55 views
0

有沒有辦法讓strtok()不能將空格解釋爲分隔符? 我從.csv文件讀取,和我的代碼有:strtok使用錯誤的分隔符(空格以及「,」)

ifstream inf("file.csv"); 
char *n, *a, *b; 
char n1[80], a1[80], b1[80], temp[80]; 
inf >> temp; 
n = strtok(temp, ","); 
strcpy(n1, n); 
a = strtok(NULL, ","); 
strcpy(a1, a); 
b = strtok(NULL, ","); 
strcpy(b1, b); 
cout << a1 << " " << b1 << endl; 

文件內容:

123,San Francisco, Los Angeles 

我覺得strtok的解釋空間,「\ n」,但我不知道如何忽略它。 我試圖把inf.ignore(''),但不起作用,並給我一些隨機值。但是,如果我將文件更改爲123,則San_Francisco,Los_Angeles 然後該程序起作用。 我怎麼能忽略空格?

回答

2

不要責怪strtok,它的ifstream當找到空白字符時會停止提取。如果您想要閱讀整行內容,則應該使用getline()變體之一。

+0

同意。如果你在做C++,而作業是關於讀取.csv而不是關於strtok函數,那麼使用getline並使用temp.find_first_of或temp.find_first_not_of。 –

+0

如果你正在輸入一個關於stackoverflow的評論,並且你輸入了,你將會有一段糟糕的時間。 :) –

+0

問題是,我們必須你strtok。它並沒有說不能使用getline,所以我會盡量使用它。 – user1078719