通过变量和文本命名文件的C ++语法

时间:2017-09-29 01:10:42

标签: c++ ofstream

我有一个程序,它接受一个文件的名称作为参数(例如:books.txt),运行,然后将结果输出到一个新的文本文件。我需要用附录命名输出文件(例如:books_output.txt)。

我尝试的方法是

ofstream outputFile;
outputFile.open(argv[1] + "_output.txt", ofstream::out);

但这没有编译。 我怎样才能做到这一点?

2 个答案:

答案 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);

哪个读得更好但意味着同样的事情