如何使用argv作为变量 < >我想使用C++中的主要函数的给定变量作为OutPutoFrm的名称的一部分。代码是: 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作为变量 < >我想使用C++中的主要函数的给定变量作为OutPutoFrm的名称的一部分。代码是: 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();,c++,string,argv,C++,String,Argv,例如,argv[5]应该是“test”。程序正在编译,并且也在运行,但不会生成输出文件。 我可以在终端上显示s1,这是它应该显示的内容-但是输出文件根本没有生成。可能您没有对文件系统/目录进行更改所需的写入权限 chmod -R 777 mydir 顺便说一句,您可以使用std::ofstream来完成此任务。如果文件不存在,它将为您创建该文件 #include <string> #include <iostream> #include <fst

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

可能您没有对文件系统/目录进行更改所需的
写入
权限

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();

   /* ... */
#包括
#包括
#包括
/* ... */
std::string name=“”;
name.append(argv[5]);
name.append(“_systemvalues.dat”);
std::ofstreamout(name.c_str());

好的。。。问题在于投入。字符“/”不能用作文件名的一部分-事后看来,这一点非常清楚。

什么是
c.close()
应该是
f.close()
?您介意显示整个代码吗?没有文件,或者文件是空的?如果
s1
是您想要的,那么问题可能不是
argv
。您应该使用
f.close()
关闭文件,并向我们展示您是如何写入文件的。使用
f.isopen()
f.good()
查看文件流是否已正确创建。从技术上讲,如果
f.open()
成功,文件应该在那里[当然也假设没有任何“删除文件”稍后进行操作。抱歉-不起作用。仍然没有生成任何文件。我猜您的意思是argv[0]而不是argc[0]@user1978661您检查权限了吗?