c ++从文本文件中读取两个单词到单个char数组

时间:2014-09-12 19:27:27

标签: c++ arrays io

我正在尝试阅读" 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
    }
  }
}

1 个答案:

答案 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);