#include <fstream>
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char filename[20] = "filename";
char userInput;
ofstream myFile;
cout << "Enter filename: ";
cin.getline(filename, sizeof(filename));
myFile.open(filename);
if(myFile.fail())
{
cout << "Error opening file: "
<< filename << "\n";
return 1;
}
cout << "Add text to the file: ";
cin.get(userInput);
while(cin.good() && userInput)
{
myFile.put(userInput);
cin.get(userInput);
}
myFile.close();
return 0;
}
我无法在没有强制退出的情况下终止输入(它仍然写入文件)。
这就是我应该做的事情
从用户接收一行输入,然后输出 到给定文件的行。这将一直持续到输入行 用户是“-1”表示输入结束。
然而,我无法解决-1部分问题。任何帮助都会受到高度赞赏,其他一切似乎都有效。答案 0 :(得分:0)
你让事情变得比他们需要的要复杂得多。例如,为什么使用C字符串而不是std::string
?使用正确的(标准提供的)类通常会导致更短,更简单和更易于理解的代码。为初学者尝试这样的事情:
int main()
{
std::string filename;
std::cout << "Enter filename" << std::endl;
std::cin >> filename;
std::ofstream file{filename};
std::string line;
while (std::cin >> line) {
if (line == "-1") {
break;
}
file << line;
}
}
答案 1 :(得分:0)
首先,作业要求从用户读取行,get()
的字符输入不应该是要使用的功能。像使用成员函数getline()
一样接收文件名并使用比较函数来检查-1
:
for (char line[20]; std::cin.getline(line, sizeof line) && std::cin.gcount(); )
{
if (strncmp(line, "-1", std::cin.gcount()) == 0)
break;
myFile.write(line, std::cin.gcount());
}