Тема: проблема з файлом,не зчитує більше двох рядків

vector <Restaurant> myRestaurant;

void Command::RestaurantShow()
{
string name;
string design;
string kitchen;
int rating;
Restaurant r;
ifstream fin("Restaurant.txt"Подмигивание;
if (!fin.is_open())
{
cout << "your file is not open!" << endl;
}
while(fin)
{
fin >> name >> design >> kitchen >> rating;
r.RestaurantInformation(name, design, kitchen, rating);
myRestaurant.push_back(r);
}
fin.close();
}

2

Re: проблема з файлом,не зчитує більше двох рядків

З відки ви це копіювали ?

3

Re: проблема з файлом,не зчитує більше двох рядків

З visual studio
Це маленька частинка коду,не знаю в чому проблема

4 Востаннє редагувалося leofun01 (14.09.2020 00:59:25)

Re: проблема з файлом,не зчитує більше двох рядків

А перед тим, як вставити у VisualStudio, з відки ?

Допустимо, я помиляюся і ви писали цей код самі. Акуратно скопіюйте код (з VS) ще раз і вставте в наступне повідомлення, але перед відправкою обгорніть код BB-теґами code. На приклад: [code]    ваш код;[/code]

5 Востаннє редагувалося koala (14.09.2020 08:48:53)

Re: проблема з файлом,не зчитує більше двох рядків

Сумна дівчинка написав:
ifstream fin("Restaurant.txt"Подмигивание;
Сумна дівчинка написав:

З visual studio

Одне з двох: або VS став підставляти смайлики при введенні, або ви його сплутали з якимось месенджером (ще й офтопною мовою).

Взагалі, щоб відповісти на питання по коду, потрібні 3 речі:
- завдання (мабуть, "прочитати текстовий файл у вектор структур", але ви цього не написали);
- код, і має бути мінімальний відтворюваний фрагмент коду, на якому видно помилку - ми з очевидних причин конкретно цей код запустити не можемо, а відтак, ви ускладнюєте нам задачу; ну і оформлення коду має значення - я кажу як про теги code для цього форуму, так і про відступи;
- опис проблеми, причому не негативною конструкцією "не робить щось", а позитивною "я очікую, що А, але цей код робить Б", і максимально конкретно (скажімо, фрагмент файлу дуже б не завадив).

Скажімо, найпростіше пояснення вашої проблеми - у файлі не більше 2 рядків, і якщо ви додасте 3-й, то його зчитає.

Утім, напруживши свої телепатичні здібності, я припустив би, що проблема у невідповідності вмісту файлу і типів змінних. Далі уже складніше - ви не навели ані першого, ані другого; можу лише сказати, що поширена проблема при читанні текстових файлів полягає у використанні відступів (string зчитується до першого відступу), але чи це ваша проблема - моєї телепатії вже не вистачає. Наступного разу намагайтеся не розраховувати на телепатів і описуйте проблему за наведеною схемою - з імовірністю не нижче 80% це допоможе вам самій побачити відповідь.

6

Re: проблема з файлом,не зчитує більше двох рядків

txt.file
CheeseBakery, modern, deserts, 5
Otset, loft, ukrainian dish, 3
Salalat,youth,salats,4

h.file
vector <Restaurant> myRestaurant;
void RestaurantInformation(string name, string design, string kitchen, int rating);

cpp.files
void Restaurant::RestaurantInformation(string name, string design, string kitchen, int rating)
{

    this->name = name;
    this->design = design;
    this->kitchen = kitchen;
    this->rating = rating;
}

void Command::RestaurantShow()
{
    string name;
    string design;
    string kitchen;
    int rating;
    Restaurant r;
    ifstream fin("Restaurant.txt");
    if (!fin.is_open())
    {
        cout << "your file is not open!" << endl;
    }
    while(fin)
    {
        fin >> name >> design >> kitchen >> rating;
        r.RestaurantInformation(name, design, kitchen, rating);
        myRestaurant.push_back(r);
    }
    fin.close();
}

7

Re: проблема з файлом,не зчитує більше двох рядків

Таки пробіл

//Otset, loft, ukrainian dish, 3
fin >> name >> design >> kitchen >> rating;

name = "Otset,"
design = "loft,"
kitchen = "ukrainian"
rating = "dish" //тут стається помилка, fin переходить у стан fail і більше не читає.

Продумайте формат файлу, а потім його читайте. Я так розумію, ви планували орієнтуватися на коми для поділу рядка, а не на пробіли? Тоді вам потрібна функція std::getline.