wchar_t str[] = L"dajiba"; 如何用printf打印输出
时间: 2024-10-19 08:13:49 浏览: 20
在 C/C++ 中,当你有一个宽字符数组 `wchar_t str[] = L"dajiba"`,它存储的是 Unicode 字符串,而普通的 `printf` 函数并不直接支持宽字符的格式化打印。为此,你需要使用特定于宽字符的输出函数,比如 C++11 引入的 `wstring_convert` 和 `wcout`,或者是 C 编程中的 `_wfprintf`。
以下是使用 C++11 的 `wstring_convert` 和 `wcout` 来打印宽字符数组的例子:
```cpp
#include <locale>
#include <codecvt>
#include <iostream>
int main() {
std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;
const wchar_t* wstr = L"dajiba";
std::string utf8_str = converter.to_bytes(wstr);
std::wcout << wstr << std::endl; // 使用宽字符输出
std::cout << utf8_str.c_str(); // 将宽字符转换成UTF-8并用普通 `cout` 输出
return 0;
}
```
如果在 C 环境中,你可以使用 `_wfprintf`:
```c
#include <stdio.h>
#include <tchar.h> // 包含宽字符头文件
const wchar_t* wstr = L"dajiba";
_wfprintf(stderr, L"%ls\n", wstr); // 使用宽字符输出
```
阅读全文