файл только один раз сохраняет данные при использовании в цикле - PullRequest
0 голосов
/ 02 января 2019

Я сделал код, в котором данные берутся из одного целого файла, и только часть из них сохраняется в другом файле. Но когда я включаю его в цикл, он не работает, он должен, и у меня возникают проблемы с поиском ошибки, может ли кто-нибудь направить меня туда, где я делаю ошибку. Вот что делает мой ниже написанный код: Получает имя пользователя от пользователя и создает файл имени пользователя, затем спрашивает пользователя, хочет ли он выбрать, сколько книг с английской книжной полки он хочет выбрать.

СЕЙЧАС ОШИБКА:
он не принимает несколько входов, если пользователь нажмет 2, он только 1 вводит и копирует одну книгу без имени в файл пользователя, но не делает это в следующий раз

МОЖЕТ ИМЕТЬ НЕКОТОРОЙ КЛИЙ, МОЖЕТ:
Я думаю, что это может быть get-line при использовании в коде, который может не работать во второй раз, когда цикл выполняется.

Я пытался модифицировать свой код в основном всеми возможными способами, но я думаю, что, возможно, я все еще новичок в области программирования. Так что моё логическое мышление может быть не очень хорошим. Вот почему мне нужно только небольшое руководство.

#include <fstream>
#include <iostream>
#include <cstring>
using namespace std;
string user;
int main()
{ 
  cout<<"enter your name to create your Libaray file for book record\n";
  getline(cin,user);
  ofstream outFile(user.c_str(),ios::app);  //user named file
  string line;
  ifstream inFile("English_book_shelf.txt"); //file with books name and 
                                             //number(labels)
  int count,c;
  cout<<"How many books do you want to buy?\n";
  cin>>c;
  for(int j=0;j<c;j++)
  {
    cout<<"Enter your choices:\n";
    cin>>count;
    while(count)
    { 
      getline(inFile, line);
      if (--count == 0)
      {
        outFile << line <<endl;
        break;
      }
    }
  }
}

Я хочу, чтобы мой код получал множественные данные от пользователя и сохранял их в файле пользователя. Например, если он хочет 3 книги, код должен выполнить копирование 3 книг из файла книжной полки и скопировать его в файл пользователя. Если он хочет 5 книг, код должен выполнить копирование 5 книг из файла книжной полки и скопировать его в пользовательский файл и так далее.

1 Ответ

0 голосов
/ 02 января 2019

Линия

if (--count == 0)

является виновником.Упростите свой код, и вам не придется беспокоиться о таких глупых ошибках.

while(count >= 0)
{ 
   getline(inFile, line);
   outFile << line <<endl;
   --count;
}
...