2012-04-28 37 views
2

据我了解,提取操作符>>被空格分隔。提取操作符是否从流中移除分隔符?例如,说我有文件做提取操作符删除分隔符?

6 
Foo 
Bar 

和代码

ifstream fin(filename); 
int x; 
fin >> x; 

没有文件流仍含有随后的6换行符(可能搞乱了后续函数getline语句)?或者是在提取过程中被删除?

+2

你试过了吗? – Mat 2012-04-28 13:26:13

+0

是的,换行符仍然存在,但很难判断是因为提取操作符的工作方式,还是在换行符之前文件中存在另一个不可见的空白字符,例如,回车 – 2012-04-28 13:28:26

回答

2

未使用的流的部分保持不变。所以随后调用getline将返回一个空行。

如果您不确定具体的文件内容,请尝试cat -A filename

0

试一试。你可以做

ifstream fin(filename); 
string x; 
fin >> x; 
cout<<x<<"foo"; 

,你会发现它;)