首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >缩短中文字符串以适应字符数组C++

问缩短中文字符串以适应字符数组C++
EN

Stack Overflow用户
提问于 2018-06-21 02:21:59
回答 1查看 107关注 0票数 0

我正在尝试在字符数组中插入拼音字符串。例如,如果我有拼音字符串,如下所示。

代码语言:javascript
复制
string str = "转换汉字为拼音音"; // needs at least 25 bytes to store 
char destination[22];
strncpy(destination, str.c_str(), 20);
destination[21] = '\0'; 

由于中文字符需要3个字节,所以我可以执行strncpy(目的,str.c_str(),(20/3)*3);但是如果str包含除中文以外的任何字符(在utf8编码中需要2字节4字节),这个逻辑将被填充。稍后,如果我试图将目标转换为打印拼音字符,则只正确打印前6个汉字,用十六进制打印2个字节。有没有办法在复制到目的地之前缩短字符串,以便在打印目的地时打印正确的中文字符(没有任何单独的十六进制字节)?使用POCO::Textendcoing还是使用POCO::POCO 8编码类?

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-21 06:56:53

只有自己创建编码文本的方式才能奏效。但是,即使在这种情况下,您也必须创建25个字符(不要忘记零结束!)数组将字符串存储在末尾以正确打印,除非创建自己的打印例程。

也就是说,所需的工作量并不能平衡额外3字节的收益。注意,这段代码实际上是C。在C++中,您不使用这种类型的代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50959451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档