2012-04-03 136 views
1

我有阅读以下形式的txt文件的问题:包含C++空格的文本文件!

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的类型是双的数据。
我曾尝试使用矩阵符号,即标签[i] [j]来读取的内容;我已经成功地做到这一点时,我的文件不包含空,但是当它确实有emty空间如上图所示,数据是随机显示的,我不知道它是什么。

所以,任何人都可以开导我请?

在此先感谢。

+3

向我们展示你的代码 – BlackBear 2012-04-03 14:13:30

回答

3

由于提取操作符删除空格,您将需要使用原始数据读取函数,如istream.get()istream.read(),而不是提取操作符(>>)。

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

+0

MMMMM的,对吧,这没什么大不了的,我用“noskipws”,我读过的所有文本,因为它是。 但是当我尝试检索2一行为例,我得到一个混乱的数据,我在索引和检索问题,正确的数据,,,, – NadCo 2012-04-03 14:20:15

+0

@NadCo:'noskipws'将防止剥出前导空格,但它不会更改第一个空格字符结束字符串的行为。 'std :: getline'似乎更适合您的任务。 – 2012-04-03 14:35:19

0

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

因此,如果您已经阅读一行文字是这样的:

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

你会用一个数组(或向量或其他)最终包含:

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

...我认为这是你要找的。