首页 > 解决方案 > 文件循环使用时只保存一次数据

问题描述

我编写了一个代码,其中数据取自一个完整的文件,只有一部分存储在另一个文件中。但是,当我把它放在循环中时,它应该不起作用,而且我无法找到错误,有人可以指导我在哪里做错了。这是我下面编写的代码所做的事情:从用户那里获取用户名并创建用户名文件,然后询问用户是否想从英文书架上选择他想选择的书。

现在出现错误:
如果用户按 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 本书并将其复制到用户文件等中。

标签: c++copyfile-handling

解决方案


线

if (--count == 0)

是罪魁祸首。简化您的代码,您就不必担心这些愚蠢的错误。

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

推荐阅读