2013-08-03 44 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

好的......問題在於輸入。字符'/'不能用作文件名的一部分 - 事後看來它非常清楚。