我编写了一个代码,其中的数据是从一个完整的文件中提取的,而其中只有一部分存储在另一个文件中。但是,当我将其放入循环中时,它应该不起作用,并且我无法找到错误,有人可以引导我在我做错的地方进行操作。
这是我下面编写的代码的作用:
从用户那里获取用户名并创建用户名文件,然后询问用户是否要从英语书架中选择他要选择的书。
现在的错误:
如果用户按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本书,然后将其复制到用户文件中,以此类推。
答案 0 :(得分:0)
行
if (--count == 0)
罪魁祸首是。简化代码,您无需担心此类愚蠢的错误。
while(count >= 0)
{
getline(inFile, line);
outFile << line <<endl;
--count;
}