gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 10:22:21 26 4
gpt4 key购买 nike

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

我在其自己的子程序中有一个菜单系统,该子程序在主程序中调用。

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

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

string sArgInit = argv[1];

这样我就可以使用 C 字符串打开文件。

但我无法将字符串获取到 main.. 之外的任何函数

有没有办法做到这一点,而不是:全局变量,将字符串作为参数参数传递给子例程。

最佳答案

以下代码展示了如何准确地执行您想要的操作,检查 argv[1] 是否存在,然后将其作为 C 字符指针或 C++ 字符串传递给函数,并在该函数中使用该值。

#include <cstdlib>
#include <iostream>
#include <string>

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] << " <test_string>" << 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 函数,因此对于该函数来说是固有的本地参数。

关于c++ - 通过 argv[1] C++ 打开文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/548509/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com