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

时间:2018-11-12 08:49:30

标签: c++

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();
}

为什么此代码不会产生新文件“ outfile.txt”?

为什么此代码不会在第22行上打印未注释的字符串?

4 个答案:

答案 0 :(得分:0)

我不确定std::fstream的用途,但是我想您想使用std::ofstream

答案 1 :(得分:0)

快速查看文档,您的outfile构造函数正在使用默认的fstream构造函数,而您未指定模式(http://www.cplusplus.com/reference/fstream/fstream/fstream/

由于这是输出文件,您是否尝试过使用ofstream构造函数?

答案 2 :(得分:0)

首先,您需要使用std::ofstream对象来创建输出文件。或者您需要使用类似的东西

std::fstream fs;
fs.open ("outfile.txt", std::fstream::out);

答案 3 :(得分:0)

要使用fstream创建文件(如果不存在),则需要将std::ios::out作为打开模式传递给fstream构造函数。像这样

 std::fstream outfile("outfile.txt", std::ios::out);

注意::这里您没有指定所需outfile.txt的路径,因此它将在您的项目目录中生成,请确保在此处进行检查。