循环使用时,文件仅保存一次数据

时间:2019-01-02 04:55:16

标签: c++ copy file-handling

我编写了一个代码,其中的数据是从一个完整的文件中提取的,而其中只有一部分存储在另一个文件中。但是,当我将其放入循环中时,它应该不起作用,并且我无法找到错误,有人可以引导我在我做错的地方进行操作。 这是我下面编写的代码的作用: 从用户那里获取用户名并创建用户名文件,然后询问用户是否要从英语书架中选择他要选择的书。

现在的错误:
如果用户按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 :(得分:0)

if (--count == 0)
罪魁祸首是

。简化代码,您无需担心此类愚蠢的错误。

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