Чтение файла из .txt файла в C ++ - PullRequest
0 голосов
/ 07 мая 2018

Содержимое menu.txt:

1 Fish Dish:Fish and chips  

И мой код:

int itemNo;
string category;
string descript;

ifstream infile("menu.txt"); 
infile >> itemNo >> category >> descript;
cout << category  << " - " << descript << " - " << itemNo <<'\n';

Я хочу получить:

Fish Dish - Fish and chips - 1

Но по какой-то причине я просто получаю:

Fish - Dish:Fish - 1

1 Ответ

0 голосов
/ 08 мая 2018

Вы можете изменить разделитель на двоеточие. См. этот ответ для получения дополнительной информации

Или более простой подход - использовать функцию getline():

istream& getline (istream& is, string& str, char delim)

Итак, для вашего примера:

int itemNo;
string category;
string descript;

ifstream infile("menu.txt");
infile >> itemNo;
getline(infile, category, ':');
getline(infile, descript);
cout << category  << " - " << descript << " - " << itemNo <<'\n';

Это даст:

 Fish Dish - Fish and chips - 1

Чтобы избавиться от дополнительного места в начале Fish Dish, добавьте дополнительную getline.

int itemNo;
string category;
string descript;

ifstream infile("menu.txt");
infile >> itemNo;
getline(infile, category, ' ');
getline(infile, category, ':');
getline(infile, descript);
cout << category  << " - " << descript << " - " << itemNo <<'\n';
...