2017-06-03 71 views
0

我正在尝试从Project Gutenberg文本文件读取并计算单词总数。我现在超调,因为带撇号的单词被重复计算。然而,文本文件中的撇号字符与ASCII字符39(即'\'')不匹配,所以我的is_word函数工作不正确。任何关于这个角色实际上是什么的建议?文本文件撇号问题

注意:当我通过手动替换vim中的撇号时,字计数器工作正常。

链接到文本文件:http://www.gutenberg.org/ebooks/1342

+1

请显示你的代码。 –

+0

在vim中,IIRC转到了字符并输入“g8”(自从我上次使用vim以来很长一段时间)。 – pmg

+0

我怀疑撇号可能表示为Unicode右单引号U + 2019。对于UTF-8文件,这些文件将显示为三个字节0xe2,0x80,0x99。但是,如果您使用了适当的Unicode识别输入法('getwchar'?),您应该可以查找值0x2019(8217)。 –

回答

0

这不是一个完整的答案,但如果你

#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这个美好的世界沿着这条道路走下去了,如果你希望你的代码在任何情况下和所有地区都能正常工作,你还需要注意几个其他问题。)

+0

*走了这条路,还有其他几个问题需要注意,如果你希望你的代码在任何情况下和所有地区都能正常工作。*这是对那天! – chqrlie