当前位置:  开发笔记 > 编程语言 > 正文

通过argv [1] C++打开文件

如何解决《通过argv[1]C++打开文件》经验,为你挑选了1个好方法。

我检查了参数argv[1]是否对我的文件有效.

我在自己的子程序中有一个菜单系统,名为main.

读取文件等是在与第一个分开的另一个子例程中完成的,也在main中调用.

如何将转移argv[1]到第一个子程序?甚至第二个?

string sArgInit = argv[1];

这样我就可以使用C-String打开文件.

但是我不能把字符串带到main之外的任何函数..

有没有办法在没有:全局变量的情况下执行此操作,将字符串作为参数传递给子例程.



1> paxdiablo..:

下面的代码显示了如何完全按照自己的意愿执行操作,检查argv [1]是否存在,然后将其作为C char-pointers或C++字符串传递给函数并使用该函数中的值.

#include 
#include 
#include 

using namespace std;

static void f1 (char *s) {
    cout << "1: " << s << endl;
}

static void f2 (const string&  s) {
    cout << "2: " << s << endl;
    cout << "3: " << s.c_str() << endl;
}

int main (int argc, char *argv[]) {
    if (argc < 2) {
        cout << "Usage: " << argv[0] << " " << endl;
        return EXIT_FAILURE;
    }

    char *s1 = argv[1];
    string s2(argv[1]);

    f1 (s1);
    f2 (s2);

    return EXIT_SUCCESS;
}

正如预期的那样输出:

1: hello
2: hello
3: hello

至于编辑,如果不将argc/argv存储在全局或将它们传递给函数,则无法访问它.那是因为它们main作为参数传递给函数,因此该函数本身就是本地的.

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有