解析函数中的命令行参数

Parse Command line arguments within a function

本文关键字:命令行 参数 函数      更新时间:2023-10-16

这是我的要求-

我必须以

的形式从命令行获得输入
-des <destIP> -prot <tcp/udp> -min <minutes>

有几个程序建议如何通过main()函数的argc和argv参数解析这些值。但我想要一个函数来获取输入行,然后解析它。

函数是-

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
}

我如何得到我需要的值?

使用CommandLineToArgvW()解析wchar_t*,例如从std::wstring解析为可以循环的wchar_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);
    }
}

这是一个特定于windows的解决方案,因为你的问题被标记为Visual Studio。如果您正在寻找一个纯c++解决方案,您将不得不手动标记inputStr,根据需要将其分割为空白和引号。有很多这样的例子