我正在创建一个带有文本文件和单词的程序。它读取文本文件并将该字与正在读取的当前字进行比较。我建立它的方式是忽略“s”。例如,如果我正在搜索“NASA”并且我遇到了“NASA”这个词,那么它只会将其视为“NASA”。不幸的是,我不能通过使用“if(ch ==''\')”,“ch”作为当前字符来捕获撇号。我的理由可能是因为文本文件中的撇号看起来像这样'。我不知道如何适应这一点。
这就是我要捕捉撇号的原因:
else if (ch == '\'')
{
#if 1
printf("Comparing Apostrophe\n");
#endif
continue;
}
请注意,它是更大程序的一部分,我不允许向您展示。这解释了“其他如果”的开头。
感谢。
答案 0 :(得分:2)
如果你的撇号看起来像''',那么你应该只检查'''字符,它不会为你做那个。这是一个不同的字符 - 看起来像扩展的ASCII字符146(十进制),“右单引号”。该文本可能来自MS Office - 它喜欢将单引号和双引号转换为单引号和双引号所谓的“智能”引号(如果你在Office之外的任何文本做任何事情,那么除了。)有人指出,“左单引号”,ascii字符145,是同一组的另一半,所以你的文本中也可能有一些。即:
else if (ch == '\'' || ch == '’' || ch == '‘')
{
[do stuff]
}
答案 1 :(得分:1)
对于宽字符wchar_t,请添加L
else if (ch == L'\'' || ch == L'’' || ch == L'‘')
{
[do stuff]
}
答案 2 :(得分:0)
您可以使用ascii数字作为撇号,而不是使用转义字符,即39: 否则如果(ch == 39)