Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.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++_Arrays - Fatal编程技术网

C++ 从文件打印输入数据

C++ 从文件打印输入数据,c++,arrays,C++,Arrays,我有一个包含数据的文本文件名input.txt- [ANB]33 34 48 85 50 59安尼斯顿,艾尔 [AUO]32 40 11 85 26 24奥本,艾尔 [BHM]33 34 11 86 45 0阿拉巴马州伯明翰 这里我要做的就是打印这行但我不能这是我的源代码谁能告诉我我做错了什么 int main() { string a,b;float c,d,e,f,g,h; int z,q; string i[15], j[15]; float k[15], l[15], m[15],

我有一个包含数据的文本文件名input.txt-

[ANB]33 34 48 85 50 59安尼斯顿,艾尔

[AUO]32 40 11 85 26 24奥本,艾尔

[BHM]33 34 11 86 45 0阿拉巴马州伯明翰

这里我要做的就是打印这行但我不能这是我的源代码谁能告诉我我做错了什么

int main()
{
string a,b;float c,d,e,f,g,h;
int z,q;

string i[15], j[15];
float  k[15], l[15], m[15], n[15], o[15], p[15];//size of array more than number of entries in data file
float x[15], y[15];



ifstream infile;
infile.open("input.txt");//open the text file

if (!infile)
{
    cout << "Unable to open file";
    exit(1); // terminate with error
}
z=0;
while (!infile.eof())
{
//To make three arrays for each column (a for 1st column, b for 2nd....)

infile>>a>>b>>c>>d>>e>>f>>g>>h;

    i[z]=a;
    j[z]=b;
    k[z]=c;
    l[z]=d;
    m[z]=e;
    n[z]=f;
    o[z]=g;
    p[z]=h;

    x[z]=k[z]+l[z]/60+m[z]/3600;
    y[z]=n[z]+o[z]/60+p[z]/3600;

    cout<<i[z]<<"\t"<<k[z]<<"\t"<< l[z]<<endl;

    z++;
}
 // To print 1st entry (1st row), similarly we can print any row
infile.close();
//getch();
}


我是C++中的新手,任何建议都有帮助。

< P>我认为避免无限循环的最简单方法是STD::GETLIN函数。 而不是填充>>a>>b>>c>>d>>e>>f>>g>>h;您可以使用以下选项:

string tmp;
stringstream ss;
getline(infile, tmp);
ss << tmp;
在这之后,你可以根据需要分割线。例如:ss>>a>>b>>c>>d>>e>>f>>g>>h;或 ss>>i[z]>>j[z]>>k[z]>>l[z]>>m[z]>>n[z]>>o[z]>>p[z]


您将需要一个额外的头文件来使用stringstream:include。

您不能这样做是什么意思?听起来你有个问题,但你没有描述它是什么。主要的问题是它变成了一个无限循环,只打印第一行。问题的解决方案是什么?你能告诉我第一个问题是你没有将z初始化为零,因此,当您使用它访问数组标记时,会得到未定义的行为。@0x499602D2这里的z=0;就在前面loop@Hasan基于您的示例输入,它不应该是infle>>a>>c>>d>>e>>f>>g>>h>>b;而不是填充>>a>>b>>c>>d>>e>>f>>g>>h;感谢您的解决方案,但我已经得到了上面的一个。非常感谢您对我的帮助: