在c++中,如何将一个字符串(非string类型的变量)赋给wchar_t类型?(除去在定义时赋值的方法)
例如,我现在有许多字符串(如:"abc", "csdnyyds", "你好"), 数量 > 114514。
显然用以下在定义时赋值的方法不行,需要先定义, 再批量赋值,所以如何将字符串赋给wchar_t类型,谢谢
wchar_t a[100] = {L"abc", L"csdnyyds", L"你好"}//此处省略114514个字符串
看下 如有帮助给个采纳谢谢 , 也可以参考你上面的那个问答 , 我写的比较详细
#include <iostream>
#include <cstdlib>
#include <cwchar>
#include <locale>
int main() {
// 设置合适的编码环境
std::setlocale(LC_ALL, "");
const char* str1 = "abc";
const char* str2 = "csdnyyds";
const char* str3 = "你好";
// 定义非string类型的变量(UTF-8编码)
// const char* str1 = u8"abc";
// const char* str2 = u8"csdnyyds";
// const char* str3 = u8"你好";
// ---------------
// const char* str1 = u8"\u0061\u0062\u0063"; // "abc"
// const char* str2 = u8"\u0063\u0073\u0064\u006e\u0079\u0079\u0064\u0073"; // "csdnyyds"
// const char* str3 = u8"\u4f60\u597d"; // "你好"
// ---------------
// const char* str1 = "\x61\x62\x63"; // "abc"
// const char* str2 = "\x63\x73\x64\x6E\x79\x79\x64\x73"; // "csdnyyds"
// const char* str3 = "\xE4\xBD\xA0\xE5\xA5\xBD"; // "你好"
// 定义wchar_t类型的二维数组
wchar_t a[100][100];
// 将字符串转换为wchar_t类型并赋值给二维数组
mbstowcs(a[0], str1, 100);
mbstowcs(a[1], str2, 100);
mbstowcs(a[2], str3, 100);
// 输出结果
std::wcout << a[0] << std::endl;
std::wcout << a[1] << std::endl;
std::wcout << a[2] << std::endl;
return 0;
}
我觉得,应该可以用下标索循环遍历字符串序列赋值的吧。
只是,您那么在量,循环会不会有点慢。