我如何从 C++ 中的 std::wstring 将变量作为 wchat_t** 传递

How do i pass a variable as wchat_t** from a std::wstring in c++

我正在使用 VS 2019,C++ 语言标准设置为默认值,我假设是 C++ 11?

我在头文件中有以下 class 的构造函数:

input_parser(int& argc, wchar_t** argv)
{
    for (auto i = 0; i < argc; ++i)
    {
        this->tokens_.emplace_back(argv[i]);
    }
};

为了调用方法 argv 参数,我按以下方式创建了一个 wchar_t 数组:

std::wstring command_line = L"-m \"F-14RHV\" -s \"BIT|Flir\" -d";
auto buffer = new wchar_t[command_line.length() + 1];
wcsncpy_s(buffer, command_line.length()+1, command_line.c_str(), command_line.length() + 1);
const auto inputs = input_parser(argc, &buffer);
delete[] buffer;

在构造函数中,argc == 0 时的第一遍没问题,但在 argc == 1 时出现访问冲突。

好的,所以 some programmer dude 是正确的,这是我在弄清楚如何用空格分割字符串后必须这样做的方法!

最终答案如下:

#include <string>
#include <sstream>
#include <algorithm>
#include <iostream>
#include <iterator>

std::wstring text = L"-m \"F-14RHV\" -s \"BIT|Flir\" -d";
std::wistringstream iss(text);
std::vector<std::wstring> results((std::istream_iterator<std::wstring, wchar_t>(iss)),
std::istream_iterator<std::wstring, wchar_t>());

使用向量将使这个过程变得更加容易。我现在可能会改变另一边使用矢量。

感谢您的帮助。