【发布时间】:2013-11-29 04:59:39
【问题描述】:
我的文件的每一行都由未知数量的整数组成,它们之间用空格分隔。我想在每一行中读取这些整数的向量。
以下是此类文件的示例:
11 3 0 1
4 5 0 3
2 3 4 1
23 4 25 15 11
0 2 6 7 10
5 6 2
1
11
我已经能够使用以下方法成功读取少量数据(请注意,outer_layers 是一个包含我要填充的这些向量的向量):
for (int i = 0; i < outer_layers.size(); i++)
{
while (in >> temp_num)
{
outer_layers[i].inner_layer.push_back(temp_num);
if (in.peek() == '\n')
break;
}
}
但是,当我尝试读取大量数据时,有时它会在一个向量下的两行中读取。在其中一个文件中,在 24 行中,它两次读取了两行,因此最后两个向量没有任何数据。
我无法绕过它。任何想法我做错了什么?
编辑:我在麻烦制造者文件的某些行中注意到的一些有趣的事情是:
假设有三行。
23 42 1 5
1 0 5 10
2 3 11
第 1 行读入就像 23 42 1 5 一样好;但是,第 2 行和第 3 行一起读取为1 0 5 10 2 3 11。
在 Notepad++ 中,它们看起来还不错,各有各的一行。但是,在记事本中,它们看起来像这样:
23 42 1 51 0 5 10 2 3 11
如果您注意到,5(第 1 行的最后一个整数)和1(第 2 行的第一个整数)没有用空格分隔;但是,10 和 2 用空格分隔。
我注意到任何双读行上的行为。如果它们用空格分隔,那么它们都会被读入。不知道为什么会发生这种情况,考虑到 Notepad++ 中仍然应该有一个换行符来显示单独的行,对吗?
【问题讨论】: