.csv ifstreams看起来像什么?

what do .csv ifstreams look like?

本文关键字:什么 看起来 ifstreams csv      更新时间:2023-10-16

我正在尝试编写。csv解析器,该任务似乎需要熟悉。csv输入文件流的性质。

我有一个。csv文件,名为"sample.csv",在文本编辑中看起来像这样:

1,2
3,4
2,4
5,6
我用c++写了下面的代码:
ifstream myfile ("sample.csv");
double data; 
char formatting;
myfile >> data; cout << data<<'n';
myfile >> formatting; cout << formatting<<'n';
myfile >> data; cout << data<<'n';
myfile >> formatting; cout << formatting<<'n';
myfile >> data; cout << data<<'n';
myfile >> formatting; cout << formatting<<'n';
myfile >> data; cout << data<<'n';
myfile >> formatting; cout << formatting<<'n';

在我看来,输出应该是这样的:

1
,
2
3
,
4
但是,我从Terminal得到以下输出:
1
,
2
3
0
3
03

这到底是怎么回事?

ifstream通常忽略空白,因此您正在读取数字'1',然后是字符',',然后是数字'2',然后是字符'3'(因为忽略换行符),然后您尝试读取数字,但实际上您有一个逗号。试着重写代码,这样在读取流时就不会看到任何换行符或其他空格了。

在读取字段时,您似乎在下注。你需要读data -> formatting -> data,重复。

ifstream myfile ("sample.csv");
double data; 
char formatting;
myfile >> data; cout << data<<'n';
myfile >> formatting; cout << formatting<<'n';
myfile >> data; cout << data<<'n';
myfile >> data; cout << data<<'n';
myfile >> formatting; cout << formatting<<'n';
myfile >> data; cout << data<<'n';

行中第二个数字后面的换行符终止了该字段,将不会被读入formatting