我如何从 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>());
使用向量将使这个过程变得更加容易。我现在可能会改变另一边使用矢量。
感谢您的帮助。
我正在使用 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>());
使用向量将使这个过程变得更加容易。我现在可能会改变另一边使用矢量。
感谢您的帮助。