我有一个程序,它接受一个文件的名称作为参数(例如:books.txt),运行,然后将结果输出到一个新的文本文件。我需要用附录命名输出文件(例如:books_output.txt)。
我尝试的方法是
ofstream outputFile;
outputFile.open(argv[1] + "_output.txt", ofstream::out);
但这没有编译。 我怎样才能做到这一点?
答案 0 :(得分:1)
您的陈述应如下所示(如我的评论所述):
market_data[ , mean(price)]
market_data[ , sd(price)]
假设outputFile.open(std::string(argv[1]) + "_output.txt", ofstream::out);
// ^^^^^^^^^^^^ ^
来自标准argv[1]
签名
main()
int main(int argc, char* argv[])
是一个argv[1]
指针,你无法以这种方式连接char*
指针。
由于有些人对过时的C ++标准版本的支持感到烦恼,早期版本的char*
签名不直接支持std::ofstream::open()
参数,而只支持const std::string
。如果您遇到这种情况,您的陈述应该是
const char*
答案 1 :(得分:-3)
你不能在2 C字符串之间加一个+。请改用std :: string。这样做
ofstream outputFile;
std::string fname = std::string(argv[1]) + "_output.txt";
outputFile.open(fname.c_str(), ofstream::out);
更新的c ++版本允许
outputFile.open(fname, ofstream::out);
哪个读得更好但意味着同样的事情