遇到的问题:
(1) string中含2bytes的中文字符及1byte的空格字符要如何计算strlen
(2) 2bytes的中文字符string中要如何输出单一字符(一般string中的string[0])
问题详细描述:
我想要用既有的词库建一个词库,修改成我想要的格式
既有词库原本的格式为:
一 般 直 些 时 定 月 点
丁 二烯 烷 香
七 彩 嘴八舌 里香 零八落 情六欲
丈 夫 量 母娘 人
希望输出为(50是默认词频):
一般 50 一直 50 一些 50 一时 50 一定 50 一月 50 一点 50
丁二烯 50 丁烷 50 丁香 50
七彩 50 七嘴八舌 50 七里香 50 七零八落 50 七情六欲 50
丈夫 50 丈量 50 丈母娘 50 丈人 50
以下是我的程式码:
https://drive.google.com/open?id=1QGOG5uFO22OAcs9pgV83eVB41FpltqI-
如果输入的档案是英文可以正确执行
https://imgur.com/cVr45nT
但如果输入的档案是中文就会变成乱码
上网查了一下是因为在中文编码中一个字符占2bytes
用%c输出一次只能输出1byte
有看到资料说好像可以将char型别改为wchar_t
strlen的部分用wcslen替换
我用上面程式码中的第22行(被注解掉的那行)做了一些测试
好像还是有一些问题
https://imgur.com/jLvgT6L
最后一笔测资”你好吗”的wcslen似乎就有错误
输入档案中有夹带1byte的空格字符似乎也不能完全用wcslen算字符数
另外试了一下若输入为中文时想只输出一个中文字符(例如第一个字符)
printf(“%c”, data_buf[0])
试过用%c或%ls好像都会出现乱码或是错误
问了几位平常有在coding的同学
好像都没有处理过中文的问题
还请版上各位前辈帮忙了,感谢