strtok 使用了错误的分隔符(空格和",")

strtok is using wrong delimiter (space as well as ",")

本文关键字:空格 分隔符 错误 strtok      更新时间:2023-10-16

有没有办法让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将空间解释为"",但我不知道如何忽略它。我尝试输入 inf.ignore(' '),但不起作用并给了我一些随机值。但是,如果我将文件更改为 123,San_Francisco,Los_Angeles然后程序工作。我怎么能忽略空格?

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