Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c++;从文件中读取值时出错_C++ - Fatal编程技术网

C++ c++;从文件中读取值时出错

C++ c++;从文件中读取值时出错,c++,C++,这是我的第一篇帖子,所以如果我写了一些违反论坛规则的东西,请表示理解。我也恰巧是C++中的新手程序员,如果可以的话,请尽量写得稍微简单一些。 我需要从名为text.txt的文件中读取一些值,如下所示(共13列): 上述文件的行数可能不确定。它是通过另一个例程生成的 我用代码::块做了一个例程。我制作了三个矩阵,将上述数据保存为整数、双精度和字符串。我所作的减速如下: int c1, c2, c7, i = 0, nNumPipes; double c5, c6, c8, c9, c11, c12

这是我的第一篇帖子,所以如果我写了一些违反论坛规则的东西,请表示理解。我也恰巧是C++中的新手程序员,如果可以的话,请尽量写得稍微简单一些。 我需要从名为text.txt的文件中读取一些值,如下所示(共13列):

上述文件的行数可能不确定。它是通过另一个例程生成的

我用代码::块做了一个例程。我制作了三个矩阵,将上述数据保存为整数、双精度和字符串。我所作的减速如下:

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;
但是,该代码在此“while”循环中失败。我错过什么了吗

我收到的错误消息是一个窗口,显示“xxx.exe已停止工作”


任何帮助都将不胜感激。

您会遇到此错误,因为您的数组PipeI和PipeD在其第一个括号中只有一个索引长,因此

PipeI[1][3]={0};
PipeD[1][6]={0};
如果你试图重复它,你就会得到错误。
数组在C++中总是有固定大小。

开始小。分解输入操作,使每个操作中只读取一项,然后查看哪个操作失败。您对
PipeI
和PipeD`的声明没有意义。您应该构造一个简短完整的示例,而不是几个片段。根据您展示和描述的代码,它应该不会太长,但它可能会指出我们现在看不到的细微问题。您最好使用(例如,
std::vector
)和一个结构来读取每个数据记录。此外,
string PipeS[10000][3]
在堆栈上分配相当大的内存量(在我的平台上为240kB)。这最好是动态完成的,即使用
std::vector
asπάνταῥεῖ 已经提到了。
PipeI[1][3]={0};
PipeD[1][6]={0};