包含c ++空格的文本文件!

时间:2012-04-03 14:12:10

标签: c++

我在阅读以下格式的txt文件时遇到问题:

    1 2 3 4 5 6 7 8 9 10
 1    f f   f   f f  
 2  f     f f   f f f
 3  f f   f   f f
 4  f f   f       f f 
 5      f   f f     f

其中:(1,2,3 ,,,,,)是indeces,f是double类型的数据 我试图用矩阵表示法读取内容,即tab [i] [j];当我的文件不包含空时,我已经成功完成了它,但是当它确实有如上所示的emty空格时,数据随机显示,我不明白它。

那么,有人可以开导我吗?

提前感谢。

2 个答案:

答案 0 :(得分:3)

您需要使用原始数据读取功能,例如istream.get()istream.read(),而不是提取运算符(>>),因为提取运算符会删除空格。

std::getline(istream&, string&)也是一个不错的选择,因为它会保留空格。

答案 1 :(得分:0)

如果数据包含可选值,每个值由(总是)单个空格字符分隔,我会尝试@BenVoigt在答案中给出的字符串读取方法,然后使用split函数(有很多例子)在StackOverflow和其他地方),告诉它不要删除空值。这是我能想到的最好的方法来处理彼此相邻的多个[Space]字符。

因此,如果你读过这样一行文字:

[Space][Space]1.2[Space]3.4[Space]

您将得到一个包含以下内容的数组(或矢量或其他内容):

"" (Empty string)
""
"1.2"
"3.4"
""

......我认为这就是你要找的东西。