我已经给出了一个赋值,我需要从名为“filename.s”的文件中获取一些输入,我的代码应该将输出写入名为“filename.m”的文件。这是我的代码,但当我尝试以outfile.open(out);
int main(int argc, char *argv[]){
readFile(argv);
int x=0;
compile(x);
mystring += "halt";
cout << mystring<< endl;
string out = argv[1];
out.resize(out.size()-1);
out += "m";
ofstream outfile;
outfile.open(out);
outfile << mystring;
outfile.close();
return 0;
}
任何人都知道可能是什么问题?因为当我给出这样的论点时它会编译:{{1}}感谢您的回复。
答案 0 :(得分:1)
我猜你使用的是没有C ++ 11的旧编译器,所以行
outfile.open(out);
无法编译,因为ni C ++ 98 open只接受字符指针而没有std :: strings。将行更改为
outfile.open(out.c_str());
它应该编译
答案 1 :(得分:0)
试试这个:
outfile.open(out.c_str());
在C ++ 98中,open()
的参数为const char *
。
答案 2 :(得分:0)
更简单的解决方案,但具体针对这种情况:
size_t pos = strlen(argv[1]) - 1;
argv[1][pos] = 'm';
std::ofstream out(argv[1]); // Easier to just create the stream already opened.