我正在尝试从Project Gutenberg文本文件读取并计算单词总数。我现在超调,因为带撇号的单词被重复计算。然而,文本文件中的撇号字符与ASCII字符39(即'\'')不匹配,所以我的is_word函数工作不正确。任何关于这个角色实际上是什么的建议?文本文件撇号问题
注意:当我通过手动替换vim中的撇号时,字计数器工作正常。
链接到文本文件:http://www.gutenberg.org/ebooks/1342
我正在尝试从Project Gutenberg文本文件读取并计算单词总数。我现在超调,因为带撇号的单词被重复计算。然而,文本文件中的撇号字符与ASCII字符39(即'\'')不匹配,所以我的is_word函数工作不正确。任何关于这个角色实际上是什么的建议?文本文件撇号问题
注意:当我通过手动替换vim中的撇号时,字计数器工作正常。
链接到文本文件:http://www.gutenberg.org/ebooks/1342
这不是一个完整的答案,但如果你
#include <wchar.h>
#include <locale.h>
然后
setlocale(LC_ALL, "en_US.UTF-8");
,然后调用getwchar()
或getwc(fp)
代替getchar
/getc
,然后检查值8217以及'\''
,你m能够让这一切工作。
(这为我工作。情况因人而异。根据您的操作系统,您可能需要使用比“的en_US.UTF-8”以外的语言环境字符串。)
(如果这样做的工作,欢迎internationalization这个美好的世界沿着这条道路走下去了,如果你希望你的代码在任何情况下和所有地区都能正常工作,你还需要注意几个其他问题。)
*走了这条路,还有其他几个问题需要注意,如果你希望你的代码在任何情况下和所有地区都能正常工作。*这是对那天! – chqrlie
请显示你的代码。 –
在vim中,IIRC转到了字符并输入“g8”(自从我上次使用vim以来很长一段时间)。 – pmg
我怀疑撇号可能表示为Unicode右单引号U + 2019。对于UTF-8文件,这些文件将显示为三个字节0xe2,0x80,0x99。但是,如果您使用了适当的Unicode识别输入法('getwchar'?),您应该可以查找值0x2019(8217)。 –