gpt4 book ai didi

c++ - 从txt文件输入到数组

转载 作者:行者123 更新时间:2023-11-30 04:40:45 24 4
gpt4 key购买 nike

我有一个文本文件,其中一行如下:

James Dean         10 Automotive      27010.43

我需要读取该文件并将上述 4 个中的每一个放入数组中。

char nameArray[MAX][NAME_MAX];
int yearArray[MAX];
char departmentArray[MAX][DEP_MAX];
double payArray[MAX];


while(i < MAX && infile) {

infile.getline(nameArray[i], 20);
infile >> yearArray[i];
infile.getline(departmentArray[i], 15);
infile >> payArray[i];

cout << nameArray[i] << " " << yearArray[i] << " " << departmentArray[i] << " " << fixed << setprecision(2) << payArray[i] << endl;
i++;
}

代码被缩减只是为了让您了解我正在尝试做什么,但是当我运行它时,我得到如下内容:

James Dean         -858993460    -92559631349317830000000000000000000000000000
000000000000000000.00

感谢您的帮助。

====编辑==========================================

我从 getline 改为 get,谢谢。我必须使用 get 而不是 >> 因为我正在阅读的一些行不仅仅是“James Dean”,它们长达 20 个字符...例如:“William K. Woodward”是另一行。

所以,如果我只使用 get,那么它可以很好地读取第一行,但是第二行我会得到同样困惑的文本。

代码如下:

    infile.get(nameArray[i], 20);
infile >> yearArray[i];
infile.get(departmentArray[i], 15);
infile >> payArray[i];

最佳答案

getline 函数接受一个输入流和一个要写入的字符串。因此,两个 getline 调用分两行读取。您的输入机制已损坏。使用 getline 或流提取运算符(即 >>>),但不能同时使用。

如果您计划使用 getline,您需要将字符串(实际上是一行输入)解析为标记,然后将它们存储在适当类型的数组中。第二个和第四个标记是数字,因此您需要将它们从字符串转换为 intdouble

运算符>>方法:

string name, surname;
int year;
double pay;
while (infile) {
infile >> name >> surname >> year >> department >> pay;
namearray[ i ] = name + " " + surname;
// ...
payarray[ i ] = pay;
++i;
}

getline 方法:

string line;
while (getline(infile, line)) {
parse(line, tokens);
namearray[ i ] = token[ 0 ] + " " + token[ 1 ];
// ...
payarray[ i ] = strTodouble(token[ 4 ]);
++i;
}

// parse definition
void parse(string line, vector<string>& token) {
// roll your own
}

double strToDouble(string s) {
// ...
}

关于c++ - 从txt文件输入到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/820696/

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