我正在尝试阅读" firstname lastname"来自.txt文件。这是我的代码(它不起作用,它只复制第一个单词),它最终会弄乱我的程序。我怎样才能解决这个问题。请,只有有用的回复
#include <fstream>
#include <iostream>
using namespace std;
//Structs
struct card {
char suit[8];
char rank[6];
int cvalue;
char location;
};
struct player {
char name[100];
int total;
card hand[];
};
int main() {
player people[4];
/open player names file
ifstream fin2;
fin2.open("Players.txt");
// check if good
if (!fin2.good()) {
cout << "Error with player file!" << endl;
return 0;
} else {
int j = 0;
fin2 >> people[j].name; //prime file
while (fin2.good()) {
j++;
fin2 >> people[j].name; //copy names into people.name
}
}
}
答案 0 :(得分:0)
在文本文件上使用输入流运算符(&gt;&gt;)将读取,直到遇到第一个空格(即空格,制表符,换行符)。您的代码fin2 >> people[j].name
只会读取文件中的第一个单词,因此您需要再次执行该单词以获取第二个单词。但是,如果你只是做了两次同样的事情,那么你最终会得到第二个字,因为它会覆盖第一个字。你可以这样做:
fin2 >> people[j].name; // read first name
n = strlen(people[j].name); // get length of first name
people[j].name[n] = ' '; // insert the space
fin2 >> &people[j].name[n+1]; // read last name
或者,如果每行只有一个名称,则可以使用getline()函数。
getline(fin2, people[j].name);