【问题标题】:How to use argv as variable如何使用 argv 作为变量
【发布时间】:2013-08-04 21:10:03
【问题描述】:

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

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] 应该是“test”。该程序正在编译并且它也在运行,但是没有生成输出文件。 我可以在终端上显示 s1,它应该是 - 但输出文件根本没有产生。

【问题讨论】:

  • 什么是 c.close() 应该是 f.close() ?你介意展示整个代码吗?
  • 没有文件,还是文件为空?
  • 如果s1 是你想要的,那么问题可能不是argv。您应该使用f.close() 关闭文件,并向我们展示您是如何写入的。
  • 使用f.isopen()f.good()查看文件流是否创建正确。
  • 从技术上讲,如果f.open() 成功,文件应该在那里[当然也假设以后没有任何“删除文件”操作。

标签: c++ string argv


【解决方案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();

   /* ... */

【讨论】:

  • 对不起 - 不起作用。仍然没有生成文件。我猜你的意思是 argv[0] 而不是 argc[0]
  • @user1978661 你检查权限了吗?
【解决方案2】:

好的...问题是输入。字符 '/' 不能用作文件名的一部分 - 事后看来真的很清楚。

【讨论】:

    猜你喜欢
    • 2012-10-20
    • 1970-01-01
    • 2011-02-16
    • 2015-03-27
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    • 2012-09-29
    相关资源
    最近更新 更多