C++11 如何从c+;中的std::wstring将变量作为wchat_t**传递+; 我使用VS 2019,C++语言标准设为默认值,我假设是C++ 11?< /P>

C++11 如何从c+;中的std::wstring将变量作为wchat_t**传递+; 我使用VS 2019,C++语言标准设为默认值,我假设是C++ 11?< /P>,c++11,std,visual-studio-2019,wstring,C++11,Std,Visual Studio 2019,Wstring,我在头文件中有一个类的以下构造函数: input_parser(int& argc, wchar_t** argv) { for (auto i = 0; i < argc; ++i) { this->tokens_.emplace_back(argv[i]); } }; 在构造函数内部,当argc==0时的第一次传递是正常的,但是当argc==1时,我得到了一个访问冲突 好的,这是正确的,下面是我在弄清楚如何用空格分割字符串后必须做

我在头文件中有一个类的以下构造函数:

input_parser(int& argc, wchar_t** argv)
{
    for (auto i = 0; i < argc; ++i)
    {
        this->tokens_.emplace_back(argv[i]);
    }
};
在构造函数内部,当
argc==0
时的第一次传递是正常的,但是当
argc==1
时,我得到了一个访问冲突

好的,这是正确的,下面是我在弄清楚如何用空格分割字符串后必须做的事情

以下是最后的答案:

#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>());
#包括
#包括
#包括
#包括
#包括
std::wstring text=L“-m\“F-14RHV\”-s\“位”Flir\“-d”;
标准:wistringstream iss(文本);
std::向量结果((std::istream_迭代器(iss)),
std::istreamu迭代器();
使用向量将使这个过程更容易。我现在可能会将另一边改为使用向量


谢谢你的帮助。

不行。反正不是直接的。相反,您需要想出一种方法,在分隔符处拆分
命令行
字符串(本例中为空格)并创建一个传递给
input\u parser
函数的
wchar\u t
指针数组。还要小心尝试初始化
命令行的字符串中的双引号。我本应该对它们进行转义,但我只显示了在Visual Studio中未转义的正在传递的字符串。为什么不可能做到这一点?我继续往前走,避开了双引号。
#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>());