我正在尝试在字符数组中插入拼音字符串。例如,如果我有拼音字符串,如下所示。
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编码类?
提前谢谢。
发布于 2018-06-21 06:56:53
只有自己创建编码文本的方式才能奏效。但是,即使在这种情况下,您也必须创建25个字符(不要忘记零结束!)数组将字符串存储在末尾以正确打印,除非创建自己的打印例程。
也就是说,所需的工作量并不能平衡额外3字节的收益。注意,这段代码实际上是C。在C++中,您不使用这种类型的代码。
https://stackoverflow.com/questions/50959451
复制相似问题