2016-05-08 88 views
2

我想知道是否有任何方法在嘗試爲名稱賦值時不忽略空格。使用fstream從文件讀取一行到不同的變量

我想在while循環中保留這個條件結構*,但得到ClientFile >>就像getline而不是cin。

*我知道我可以使用substring並找到,這不是主意。

從文本文件線例如:

1;鋼鐵俠 ; 10.70

問題: 程序不進入循環,因爲名稱被指定爲只有Iron。

using namespace std; 

int main() 
{ 
    ifstream ClientsFile("clients.txt"); 
    int id; 
    string name; 
    double money; 
    char sep1; 
    char sep2; 

    while (ClientsFile >> id >> sep1 >> name >> sep2 >> money) 
    { 
     cout << "id: " << id << endl << "name: " << name << endl << "money: " << money << endl << endl; 
    } 

    return 0; 
} 

謝謝。

回答

3

輸入運算符>>在空格上分開。相反,您可能需要使用std::getline來讀取分號分隔的字段。

喜歡的東西

std::string id_string, money_string; 
while (std::getline(ClientsFile, id_string, ';') && 
     std::getline(ClientsFile, name, ';') && 
     std::getline(ClientsFile, money_string)) 
{ 
    id = std::stoi(id_string); 
    money = std::stod(money_string); 
    ... 
} 
+0

這就是我所需要的。謝謝。 –