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行上打印未注释的字符串?
答案 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
的路径,因此它将在您的项目目录中生成,请确保在此处进行检查。