c++ - 文件循环使用时只保存一次数据
问题描述
我编写了一个代码,其中数据取自一个完整的文件,只有一部分存储在另一个文件中。但是,当我把它放在循环中时,它应该不起作用,而且我无法找到错误,有人可以指导我在哪里做错了。这是我下面编写的代码所做的事情:从用户那里获取用户名并创建用户名文件,然后询问用户是否想从英文书架上选择他想选择的书。
现在出现错误:
如果用户按 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 本书并将其复制到用户文件等中。
解决方案
线
if (--count == 0)
是罪魁祸首。简化您的代码,您就不必担心这些愚蠢的错误。
while(count >= 0)
{
getline(inFile, line);
outFile << line <<endl;
--count;
}
推荐阅读
- javascript - 如何通过 npm cli 将 env 变量传递给 rollup.config.js?
- html - 如何选择除特定 div 内的元素之外的所有元素
- ios - 我们可以为 2 个不同的国家/地区发布具有 1 或 2 个不同功能的相同应用程序吗?
- python - 无法通过使用 openpyxl 的列标题读取内容
- javascript - 在打字稿中获取输入值
- java - 如果插件 jar 中不同的 jar 具有相同的类名,则访问类
- algorithm - 如何证明完整二叉堆(min-heap)中第 k 个最小元素的预期深度为 O(logk)?
- server - 在 WSO2 身份服务器 5.8.0 中声明方言错误
- javascript - 如何使用 es6 过滤对象值
- git - git 子树与 Gerrit 兼容吗?