日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++对中文字符的处理

發布時間:2025/3/21 c/c++ 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++对中文字符的处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

1.C++的string對中文的查找替換之類的基本操作并不友好,如果要對中文進行操作,要把中文轉成寬字符(wstring)來解決,因為中文字符長度不確定的,在unicode中每個中文為2個字節,而字符串中有時還可能有英文數字字符等,這些只占一個字節1個字節,查找的過程很容易返回的不是找到的位置。
2.如果要操作中文字符串,比較好的辦法先把string轉成wstring,進行操作查找匹配操作之后,再轉回來。
3.這里我定了個類,把它們之間的互相轉換都封裝成函數。

代碼

Chinese.h

#pragma once #include <string> #include <iostream>class Chinese { public:Chinese();~Chinese();//char*轉換為wchar_t*wchar_t* MBCSToUnicode(wchar_t * buff, const char * str);//wchar*轉換為char*char* unicodeToMBCS(char* buff, const wchar_t* str);//string轉wstringstd::wstring strToWstr(std::string &input);std::string wstrToStr(std::wstring &wstr);char* wstrToChar(std::wstring &wstr);char* wstrToChar(const wchar_t* wstr); };

Chinese.cpp

#include "Chinese.h"Chinese::Chinese() {}Chinese::~Chinese() { }wchar_t* Chinese::MBCSToUnicode(wchar_t* buff, const char* str) {wchar_t * wp = buff;char * p = (char *)str;while (*p){if (*p & 0x80){*wp = *(wchar_t *)p;p++;}else {*wp = (wchar_t)*p;}wp++;p++;}*wp = 0x0000;return buff; }char* Chinese::unicodeToMBCS(char* buff, const wchar_t* str) {wchar_t * wp = (wchar_t *)str;char * p = buff, *tmp;while (*wp){tmp = (char *)wp;if (*wp & 0xFF00){*p = *tmp;p++; tmp++;*p = *tmp;p++;}else{*p = *tmp;p++;}wp++;}*p = 0x00;return buff; }std::wstring Chinese::strToWstr(std::string &input) {size_t len = input.size();wchar_t * b = (wchar_t *)malloc((len + 1) * sizeof(wchar_t));MBCSToUnicode(b, input.c_str());std::wstring r(b);free(b);return r; }char* Chinese::wstrToChar(std::wstring &wstr) {char* re = wstrToChar(wstr.c_str());return re; }char* Chinese::wstrToChar(const wchar_t* wstr) {int len = wcslen(wstr);char * buff = (char *)malloc((len * 2 + 1) * sizeof(char));char* re = unicodeToMBCS(buff, wstr);free(buff);return re; }std::string Chinese::wstrToStr(std::wstring &wstr) {size_t len = wstr.size();char * b = (char *)malloc((2 * len + 1) * sizeof(char));unicodeToMBCS(b, wstr.c_str());std::string r(b);free(b);return r; }

main.cpp

#include <iostream> #include <string> #include "Chinese.h"int main() {//輸入層:接收char*輸入,并將其轉換為wchar*std::string input = "于老師的k父親王老爺子是蒙古的海軍司令!yes";std::string temp = "王";Chinese ch;std::wstring w_str = ch.strToWstr(input);std::wstring w_tem = ch.strToWstr(temp);int index = w_str.find(w_tem);std::cout << index << std::endl;return 0; }

總結

以上是生活随笔為你收集整理的C++对中文字符的处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 牛牛av在线 | 清纯唯美第一页 | 亚洲精品 日韩无码 | 亚洲爆乳无码精品aaa片蜜桃 | 偷拍欧美亚洲 | 久久久久久9 | 在线观看涩涩视频 | 国产视频一区二区三区在线播放 | 久久久91| 超碰caoporen | 亚洲色图欧美日韩 | 超碰在线超碰 | 亚洲一区免费看 | 黄色av小说在线观看 | 亚洲天堂五码 | 国产精品美女久久久久久 | 青青草国产成人av片免费 | 国产对白刺激视频 | 91精品国产手机 | 黄色网页在线 | 超碰888| 欧美日韩一区二区不卡 | 成人午夜免费毛片 | 久久2018| 欧美日韩高清免费 | 51ⅴ精品国产91久久久久久 | 色视频网站| 色久影院 | 操在线视频 | 黄色一级片免费观看 | 日韩精品高清视频 | 岛国av免费在线观看 | 欧美黑人精品一区二区 | 在线播放精品 | 巨大黑人极品videos精品 | 久久人人干 | 成人综合激情网 | 欧美亚韩一区二区三区 | 欧美日韩亚洲国产精品 | 一本色道久久综合亚洲精品 | 色播五月激情五月 | 国产精品日韩在线观看 | 小明天天看 | cao在线视频 | 大尺度电影在线 | 美女成人在线 | 精品久久五月天 | 在线观看av不卡 | av黄色免费观看 | 亚洲成色在线 | 日b视频免费观看 | 日本福利一区二区 | 亚洲国产日韩在线 | 一区三区在线 | 国产区在线 | 美女mm131爽爽爽免费动视频 | 91久久精品一区二区三 | 神马午夜麻豆 | 亚洲码欧美码一区二区三区 | 蜜臀视频一区二区 | 扩阴视频 | 久久丝袜美腿 | 亚洲制服一区 | 老公吃小头头视频免费观看 | 欧美第十页| 亚州福利| 久色视频在线播放 | 4444亚洲人成无码网在线观看 | 中文字幕三级 | 亚洲一区二区三区高清视频 | 亚洲一区电影网 | 夜夜看av| 法国伦理少妇愉情 | 蜜桃av色偷偷av老熟女 | 性感av在线| 重口味av| 污到下面流水的视频 | 成人午夜视频免费看 | 在线观看日韩精品 | 先锋影音av资源站 | 欧美日韩伊人 | 亚洲一区二区三区av无码 | 懂色av | 99蜜桃臀久久久欧美精品网站 | 亚洲视频在线免费观看 | 中文字幕永久 | 久久久久久久久久久久久国产 | 香蕉a视频| av色欲无码人妻中文字幕 | 人妻丰满熟妇岳av无码区hd | 日本电影成人 | 黄色av网站在线免费观看 | 男人添女人下部高潮全视频 | 爱爱15p| av男人的天堂网 | 人妻体体内射精一区二区 | 亚洲乱码精品 | 久久综合一区 | 天堂俺去俺来也www久久婷婷 |