Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 解析函数中的命令行参数_C++_Visual Studio 2005_Command Line Arguments - Fatal编程技术网

C++ 解析函数中的命令行参数

C++ 解析函数中的命令行参数,c++,visual-studio-2005,command-line-arguments,C++,Visual Studio 2005,Command Line Arguments,这是我的要求- 我必须从命令行获取表单中的输入 -des <destIP> -prot <tcp/udp> -min <minutes> -des-prot-min 有几个程序建议如何通过main()函数的argc和argv参数解析这些值。但是我想要一个函数,它获取iput行,然后解析它 功能将是- void GetArguments() { cout << "Enter arguments ..." << endl;

这是我的要求-

我必须从命令行获取表单中的输入

-des <destIP> -prot <tcp/udp> -min <minutes>
-des-prot-min
有几个程序建议如何通过main()函数的argc和argv参数解析这些值。但是我想要一个函数,它获取iput行,然后解析它

功能将是-

void GetArguments()
{
    cout << "Enter arguments ..." << endl;
    cin >> inputStr;//eg: inputStr = "-des 127.0.0.1 -prot tcp -min 60"

    //code to parse the input arguments and get values of dest IP, protocol and time
}
void GetArguments()
{
cout-inputStr;//例如:inputStr=“-des 127.0.0.1-prot tcp-min 60”
//解析输入参数并获取dest IP、protocol和time的值的代码
}
如何获取所需的值?

用于将
wchar\u t*
解析为
wchar\u t*[]
数组,如从
std::wstring
解析为
wchar\u t*[]
数组,您可以循环使用该数组,就像使用
argv
/
argc
一样。例如:

void GetArguments()
{
    std::wstring inputStr;
    std::wcout << L"Enter arguments ..." << std::endl;
    std::wcin >> inputStr;

    int numArgs;
    LPWSTR *args = CommandLineToArgvW(inputStr.c_str(), &numArgs);
    if (args)
    {
        for (int i = 0; i < numArgs; ++i)
        {
            // use args[i] as needed...
        }
        LocalFree(args);
    }
}
void GetArguments()
{
std::wstring inputStr;
std::wcout inputStr;
国际货币基金组织;
LPWSTR*args=CommandLineToArgvW(inputStr.c_str(),&numArgs);
如果(args)
{
对于(int i=0;i

这是一个特定于Windows的解决方案,因为您的问题是针对Visual Studio标记的。如果您正在寻找纯C++解决方案,您将不得不手工篡改<代码>输入输出> /代码>,根据需要在空白和引号上进行拆分。有很多这样的例子。

您需要将
main()
函数的参数传递给这个函数(
GetArguments()
)。没有其他方法可以获取输入行。我需要为LPWSTR和CommandLineToArgvW()包含什么标题?如果您阅读我链接到的文档,它会告诉您,
CommandLineToArgvW()
Shellapi.h
中声明。对于
LPWSTR
,它在
WinNT.h
中声明,它包含在
Windows.h
中。