我检查了参数argv[1]
是否对我的文件有效.
我在自己的子程序中有一个菜单系统,名为main.
读取文件等是在与第一个分开的另一个子例程中完成的,也在main中调用.
如何将转移argv[1]
到第一个子程序?甚至第二个?
string sArgInit = argv[1];
这样我就可以使用C-String打开文件.
但是我不能把字符串带到main之外的任何函数..
有没有办法在没有:全局变量的情况下执行此操作,将字符串作为参数传递给子例程.
下面的代码显示了如何完全按照自己的意愿执行操作,检查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
作为参数传递给函数,因此该函数本身就是本地的.