C++无法创建、读取或写入文件
为什么此代码不生成新文件outfile.txtC++无法创建、读取或写入文件,c++,C++,为什么此代码不生成新文件outfile.txt 为什么这段代码不在第22行打印未注释的字符串?我不确定std::fstream的作用,但我认为您希望使用std::ofstream来代替。快速查看文档您的outfile构造函数使用默认的fstream构造函数,并且您没有指定模式 由于这是一个输出文件,您是否尝试过使用ofstream构造函数?首先,您需要使用std::ofstream对象来创建输出文件。或者你需要用这样的东西 std::string uncomment(std::ifstream&
为什么这段代码不在第22行打印未注释的字符串?我不确定std::fstream的作用,但我认为您希望使用std::ofstream来代替。快速查看文档您的outfile构造函数使用默认的fstream构造函数,并且您没有指定模式
由于这是一个输出文件,您是否尝试过使用ofstream构造函数?首先,您需要使用std::ofstream对象来创建输出文件。或者你需要用这样的东西
std::string uncomment(std::ifstream& infile)
{
std::fstream outfile;
std::string buffer;
std::string tmp;
while(getline(infile, buffer)) {
if(!(buffer[0] == '#')) {
buffer += tmp;
}
}
return buffer;
}
int main(int argc, char const *argv[])
{
std::string filename = argv[1];
std::ifstream infile(filename);
std::fstream outfile("outfile.txt");
std::string buffer = uncomment(infile);
std::cout << buffer << std::endl;
outfile << buffer << std::endl;
outfile.close();
infile.close();
}
若fstream不存在,则要创建文件,需要将std::ios::out作为开放模式传递给fstream构造函数。像这样
std::fstream fs;
fs.open ("outfile.txt", std::fstream::out);
注意:此处您没有指定所需outfile.txt的路径,因此它将在您的项目目录中生成,请确保在那里进行检查。为什么没有错误检查?如果你把它包括进去,你会很快找到答案。在你的uncomment方法中,你似乎把buffer和tmp混淆了。您读入缓冲区并向其中添加tmp。这实际上是两个问题。请尽量只问一个!另外,作为这里的新用户,请阅读。@PaulSanders我实际上在代码中有错误检查。我只是在帖子里说不要乱七八糟。@Philipp,啊,我怎么会错过这个,谢谢你,现在一切都好了。谢谢你。据我从文档中了解,若文件不存在,fstream将创建该文件,而无需传递额外参数。
std::fstream outfile("outfile.txt", std::ios::out);