1
这是我的第一篇文章,所以如果我已经写了论坛规则或对论坛规则进行了格式化,请显示一些理解。我也碰巧是C++的新手程序员,所以如果你可以请尽可能简化写一些简化。从文件中读取值的C++错误
我需要阅读来自名为的text.txt文件,该文件是这样的(共13个列)的一些值:
1 2 B5 AA 120 0 100 1.5 1.5 G 0 0 0 \n
1 2 B6 AB 120 0 100 1.5 1.5 G 0 0 0 \n
1 2 B7 AC 120 0 100 1.5 1.5 G 0 0 0 \n
...
上述文件可以有行的一个不确定的编码。它是通过其他例程生成的。
我在code :: blocks中创建了一个例程。我做了三个矩阵,将上述数据保存为整数,双精度,字符串。我已经减速如下:
int c1, c2, c7, i = 0, nNumPipes;
double c5, c6, c8, c9, c11, c12, c13;
string c3, c4, c10;
int PipeI[][3] = {0};
double PipeD[][6] = {0};
string PipeS[10000][3];
然后我用下面的语法来读取行:
ifstream inf("C:\\text.txt");
while (inf >> c1 >> c2 >> c3 >> c4 >> c5 >> c6 >> c7 >> c8 >> c9 >> c10 >> c11 >> c12 >> c13)
{
PipeI[i][0] = c1;
PipeI[i][1] = c2;
PipeS[i][0] = c3;
PipeS[i][1] = c4;
PipeD[i][2] = c5;
PipeI[i][2] = c7;
PipeD[i][0] = c8;
PipeD[i][1] = c9;
PipeS[i][2] = c10;
PipeD[i][5] = c11;
PipeD[i][3] = c12;
PipeD[i][4] = c13;
i++;
}
nNumPipes = i;
代码然而,在这种“而”循环失败。我想念什么?
我得到的错误消息是一个窗口说“xxx.exe已停止工作”。
任何帮助将不胜感激。
从小开始。分解您的输入操作,以便每个项目只能读取一个项目并查看哪个项目失败。你的'PipeI'和PipeD'声明没有意义。您应该构建一个简短的完整示例,而不是几个片段。根据你所显示和描述的代码,它不应该更长,但它可能指出我们现在看不到的微妙问题。 – 2015-04-05 11:12:18
你可能最好使用[C++标准容器](http://en.cppreference.com/w/cpp/container)(例如'std :: vector <>')和每个数据记录的结构读。 – 2015-04-05 11:36:11
另外,'string PipeS [10000] [3]'是在堆栈上分配的相当大量的内存(在我的平台上是240kB)。这将更好地动态完成,即使用'std :: vector'作为已经提到的πάνταῥεῖ。 – Carlton 2015-04-05 12:22:03