C++无法创建、读取或写入文件

C++无法创建、读取或写入文件,c++,C++,为什么此代码不生成新文件outfile.txt 为什么这段代码不在第22行打印未注释的字符串?我不确定std::fstream的作用,但我认为您希望使用std::ofstream来代替。快速查看文档您的outfile构造函数使用默认的fstream构造函数,并且您没有指定模式 由于这是一个输出文件,您是否尝试过使用ofstream构造函数?首先,您需要使用std::ofstream对象来创建输出文件。或者你需要用这样的东西 std::string uncomment(std::ifstream&

为什么此代码不生成新文件outfile.txt


为什么这段代码不在第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);