我在阅读以下格式的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空格时,数据随机显示,我不明白它。
那么,有人可以开导我吗?
提前感谢。
答案 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"
""
......我认为这就是你要找的东西。