什么.csv ifstreams看起来像?

时间:2014-06-10 20:02:32

标签: c++ csv

我正在尝试编写.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

但是,我从终端获得以下输出:

1
,
2
3
0
3
03

到底是怎么回事?

2 个答案:

答案 0 :(得分:0)

ifstream一般会忽略空格,因此您正在读取数字&#39; 1&#39;,然后是字符&#39;,&#39;,然后是数字&#39; 2&#39;,然后是字符&#39; 3&#39; (因为新行被忽略),然后你尝试读取一个数字,但实际上你有一个逗号。尝试重写代码,以便在从流中读取时不希望看到任何换行符或其他空格。

答案 1 :(得分:0)

在阅读字段时,您似乎一个接一个地下注。您需要读取数据 - &gt;格式化 - &gt;数据,重复。

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