C++如何将一串中文分为一个个汉字并且存储?
时间: 2024-03-07 15:49:05 浏览: 42
在C++中,可以使用字符串和字符数组来存储中文字符串。要将一串中文分为一个个汉字并且存储,可以使用以下方法:
1. 将中文字符串转换为宽字符类型(wchar_t)字符串。
2. 使用循环遍历宽字符类型字符串的每个字符,判断是否为中文字符。
3. 如果是中文字符,则将其存储到一个新的字符数组或字符串中。
4. 如果不是中文字符,则忽略。
以下是一个示例代码:
```c++
#include <iostream>
#include <cstring>
#include <locale>
using namespace std;
int main() {
setlocale(LC_ALL, ""); // 设置本地化环境
string inputStr = "中文字符串";
wstring_convert<codecvt_utf8<wchar_t>> conv; // 定义转换器
wstring wstr = conv.from_bytes(inputStr); // 转换为宽字符类型字符串
string outputStr = ""; // 存储中文字符的字符串
for (wchar_t c : wstr) {
if (iswalpha(c) && iswascii(c)) { // 如果是英文字母或数字,则直接存储
outputStr += (char)c;
} else if (iswprint(c)) { // 如果是可打印字符,则判断是否为中文字符
outputStr += conv.to_bytes(c); // 存储中文字符
}
}
cout << outputStr << endl; // 输出中文字符的字符串
return 0;
}
```
这个示例代码将输入的中文字符串转换为宽字符类型字符串,然后遍历每个字符,判断是否为中文字符,如果是中文字符,则将其转换为普通字符串类型并存储到新的字符串中。最后输出新的字符串即可。