strtok使用错误的分隔符(空格以及“,”)

时间:2012-06-03 23:46:05

标签: c++ ifstream ignore strtok

有没有办法让strtok()不将空格解释为分隔符? 我正在阅读.csv文件,我的代码有:

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 然后程序工作。 我怎么能忽略空格?

1 个答案:

答案 0 :(得分:2)

不要责怪strtokifstream在找到空白字符时停止提取。如果要读取整行,则应使用getline()变体之一。