string转 wchar_t * 一行代码
时间: 2023-09-03 10:12:47 浏览: 82
假设你的 string 对象为 str,可以使用以下代码将其转换为 wchar_t* 类型:
```
const wchar_t* wstr = wstring(str.begin(), str.end()).c_str();
```
需要注意的是,由于 c_str() 返回的指针指向的内存空间可能被释放,因此在使用 wstr 指针时需要保证其指向的内存空间仍然有效。如果需要在较长时间内使用 wstr 指针,建议将其复制到新的内存空间中。
相关问题
严重性 代码 说明 项目 文件 行 禁止显示状态 错误 C2664 “cv::Mat cv::imread(const cv::String &,int)”: 无法将参数 1 从“wchar_t *”转换为“const cv::String &” MFCOpencv D:\Git\VS2019\MFCOpencv\MFCOpencvDlg.cpp 199
这个错误的原因是你传递给 `cv::imread` 函数的第一个参数是 `wchar_t*` 类型,而该函数的第一个参数需要的类型是 `const cv::String&`。你可以使用 `cv::String` 类型来替代 `wchar_t*` 类型来解决这个问题。你可以尝试以下两种方法:
1. 将 `wchar_t*` 转换为 `std::string` 类型,然后再将其转换为 `cv::String` 类型。代码示例如下:
```cpp
std::wstring wstr = L"your_wide_string";
std::string str(wstr.begin(), wstr.end());
cv::String filename(str);
cv::Mat img = cv::imread(filename, cv::IMREAD_COLOR);
```
2. 直接使用 `cv::String` 类型来传递文件名。例如:
```cpp
cv::String filename = "your_filename.jpg";
cv::Mat img = cv::imread(filename, cv::IMREAD_COLOR);
```
希望这能帮到你!
Line 110: Char 22: error: no matching function for call to 'stoi' tmpNum = stoi(newStr[j]); ^~~~ /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/basic_string.h:6506:3: note: candidate function not viable: no known conversion from '__gnu_cxx::__alloc_traits<std::allocator<char>, char>::value_type' (aka 'char') to 'const std::string' (aka 'const basic_string<char>') for 1st argument stoi(const string& __str, size_t* __idx = 0, int __base = 10) ^ /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/basic_string.h:6612:3: note: candidate function not viable: no known conversion from '__gnu_cxx::__alloc_traits<std::allocator<char>, char>::value_type' (aka 'char') to 'const std::wstring' (aka 'const basic_string<wchar_t>') for 1st argument stoi(const wstring& __str, size_t* __idx = 0, int __base = 10) ^ 1 error generated.
这个错误提示显示在第110行中使用了 `stoi()` 函数,但是该函数的参数类型不匹配。
根据错误提示,`stoi()` 函数需要的第一个参数是一个 `std::string` 类型的变量,但是在第110行中传递给 `stoi()` 函数的是一个 `char` 类型的变量。
为了解决这个错误,可以将第110行的代码修改为:
```
tmpNum = stoi(string(1, newStr[j]));
```
这里的 `string(1, newStr[j])` 表示将 `newStr[j]` 这个字符转换为一个字符串,然后再将这个字符串作为 `stoi()` 函数的参数传递。这样就可以将 `char` 类型的变量转换为 `std::string` 类型的变量,符合 `stoi()` 函数的参数类型要求了。
阅读全文