std::wstring初始化
时间: 2023-07-04 17:26:26 浏览: 245
std::wstring可以通过多种方式进行初始化:
1. 使用字符串字面值直接进行初始化:
```c++
std::wstring wstr1 = L"Hello World!";
```
2. 使用其他std::wstring对象进行初始化:
```c++
std::wstring wstr2 = wstr1;
```
3. 使用字符指针进行初始化:
```c++
const wchar_t* wstr3 = L"Hello World!";
std::wstring wstr4 = wstr3;
```
4. 使用std::string对象进行初始化:
```c++
std::string str = "Hello World!";
std::wstring wstr5(str.begin(), str.end());
```
5. 使用字符数组进行初始化:
```c++
wchar_t wstr6[] = L"Hello World!";
std::wstring wstr7(wstr6);
```
需要注意的是,当使用字符指针或字符数组进行初始化时,需要确保该指针或数组以空字符'\0'结尾。
相关问题
const wchar_t* ID_MAIN[] = {L"One", L"Two"};std::wstring myString(ID_MAIN[0]);没有与参数列表匹配的构造函数"std: basic string<Elem, Traits,A|oc> basic string[其中Elem= wchar tTraits=std: char traits< wchar t>, Alloc=std: allocator< wchar t>]”实例
这个错误的原因是std::wstring的构造函数需要一个const wchar_t*类型的参数,而ID_MAIN数组中存储的是const wchar_t*类型的指针。解决这个问题的方法是使用ID_MAIN数组中的指针来初始化std::wstring对象,而不是直接将指针作为参数传递给std::wstring的构造函数。你可以尝试以下代码:
```cpp
const wchar_t* ID_MAIN[] = {L"One", L"Two"};
std::wstring myString(ID_MAIN[0]);
```
这样就可以正确地将ID_MAIN数组中的第一个指针L"One"转换为std::wstring对象了。
C++在数组中const wchar_t *类型的值不能用于初始化const wchar_t类型的实体怎么解决
您可以使用`std::wstring`类来解决这个问题。`std::wstring`是一个标准的C++字符串类型,支持宽字符类型,可以存储`wchar_t`类型的数据。
例如,如果您有一个`const wchar_t*`类型的数组`myArray`,您可以使用以下代码将其转换为一个`std::wstring`类型的变量:
```
const wchar_t* myArray = L"Hello World";
std::wstring myString(myArray);
```
现在,您可以将`myString`用作`const wchar_t`类型的实体。
另外,如果您需要将`std::wstring`类型的值转换回`const wchar_t*`类型的指针,您可以使用`c_str()`函数,例如:
```
std::wstring myString = L"Hello World";
const wchar_t* myPointer = myString.c_str();
```