2014-09-12 119 views
-4

我想從.txt文件中讀取「名字姓氏」。這是我有的代碼(它不工作,它只是複製第一個單詞),並且最終總體上弄亂了我的程序。我怎樣才能解決這個問題。請,只有有用的回覆C++從文本文件讀取兩個單詞到單個字符數組

#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

「人」在哪裏申報? – Borgleader 2014-09-12 19:29:53

+1

Players.txt文件是什麼樣子的? – 2014-09-12 19:31:04

+0

我們是'人'。 – Shoe 2014-09-12 19:31:42

回答

0

上的文本文件使用輸入流運算符(>>)將讀到第一空白遇到(即空格,製表符,換行符)。您的代碼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); 
相關問題