gpt4 book ai didi

C++将数据读入结构数组

转载 作者:行者123 更新时间:2023-11-28 06:55:19 25 4
gpt4 key购买 nike

我找到了一种将数据读入我的数组结构的方法,但我无法控制它读取了多少。它将读取输入文件中的所有 14 个条目,但在读取完 14 个条目后,它会继续读取几行然后停止。但是,如果我将读取数据的代码放在任何循环中,无论是 while 还是 for,它都会开始打印大量数字,而不是文件中包含的内容。有谁知道为什么会这样?有办法解决吗

输入文件如下所示(不包括点):文件中有14组数据。因此,如下所示,第 1 组将包括佐治亚州 76.4 10,然后是北卡罗来纳州 95.5 20,依此类推直到 14 组。

输入文件中的数据如下所示:

georgia
76.4 10
north carolina
95.5 20
and so on.

需要将数据打印到屏幕上,如:

georgia 76.4 10
north carolina 95.5 20
etc.

问题出在我的代码中,我尝试读入输入文件但失败了。

#include <iostream>
#include <fstream>
#include <cstdlib>

struct ATdata
{
string state;
double miles;
int shelters;
};

int readData( ifstream& input, struct ATdata data[] );

int main()
{
ifstream input;
char filename[256];
ATdata data[14];
int i;

cout << "Enter input file name: ";
cin >> filename;

input.open( filename );

if ( input.fail() )
{
cout << "Input file does not exist." << endl;
exit(1);
}

readData( input, data );

cout << i << endl;
return(0);

}

int readData( ifstream& input, struct ATdata data[] )
{
int i, j;

getline( input, data[i].state, '\t' );
input.ignore( 14, '\n' );
input >> data[i].miles;
input.ignore( 1, ' ' );
input >> data[i].shelters;

for ( j = 0; j < 14; j++ )
{
cout << data[j].state << data[j].miles << data[j].shelters << endl;
}
}

对于所有试图尽可能清晰的信息,以免看起来更愚蠢,我深表歉意。感谢您度过愉快的一天。

最佳答案

getline() 接受一个 ostream& 和一个 string。由于您的类型不是 string,因此它会给您一个错误。我建议您像这样阅读您的输入:

for (int i = 0; i < 14; i++ )
{
input >> data[i].state >> data[i].miles >> data[i].shelters;
}

顺便说一句,您的state 是一个char,即1 个字符。将其设为 std::string

关于C++将数据读入结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23255654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com