2013-08-03 41 views
0

我想使用一个给定的变量作为我的主要函数在C++中用作输出文件名称的一部分。代码是:如何使用argv作为变量

int main(int argc, char* argv[]) { 
fstream f,g; 
string s1,s2,name; 
name = argv[5]; 

s1 = name+("_systemvalues.dat"); 
f.open(s1.c_str(), ios::out); 
... 
c.close(); 

例如,argv [5]应该是“测试”。该程序正在编译并且正在运行,但输出文件未生成。 我可以在终端上显示s1并且它应该是 - 但输出文件根本不会生成。

+4

什么是'c.close()'应该是'f.close()'?你介意显示完整的代码吗? – P0W

+0

没有文件,或者文件是空的? –

+1

如果's1'是你想要的,问题可能不是'argv'。你应该用'f.close()'关闭文件,并告诉我们你是如何写入的。 – DUman

回答

1

也许您没有所需的write权限来更改文件系统/目录。

chmod -R 777 mydir 

顺便说一句,你可以使用std :: ofstream作业。如果它尚不存在,它将为您创建该文件。

#include <string> 
    #include <iostream> 
    #include <fstream> 

    /* ... */ 

    std::string name = ""; 
    name.append(argv[5]); 
    name.append("_systemvalues.dat"); 

    std::ofstream out(name.c_str()); 

    out << "text" << std::endl; 

    out.close(); 

    /* ... */ 
+0

对不起 - 不起作用。目前还没有文件。我想你的意思是argv [0]而不是argc [0] – user1978661

+0

@ user1978661你检查了权限吗? –

+0

它工作,如果我只是使用类似的东西 – user1978661

0

好的......问题在于输入。字符'/'不能用作文件名的一部分 - 事后看来它非常清楚。