2016-05-08 8 views
2

名前に値を代入しようとするとスペースを無視しない方法があるのだろうかと思います。ファイルからfstreamを使って異なる変数に行を読む

whileループでこの条件付き構造を保持したいですが、ClientFileをgetlineのように取得し、cinとして取得しないでください。

*私は部分文字列を使用して見つけることができますが、それは考え方ではありません。

テキストファイルからの行の例:

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

よう

何か。ありがとうございました。 –

関連する問題