2

我正在创建一个程序,它需要一个文本文件和一个单词。它读取一个文本文件并将该单词与正在读取的当前单词进行比较。我构建它的方式是忽略“的”。例如,如果我在搜索“NASA”时遇到了“NASA's”这个词,它只会读作“NASA”。不幸的是,我无法通过使用“if (ch == ''\')”来捕捉撇号,“ch”是当前字符。我的理由可能是因为文本文件中的撇号看起来像这样 '. 我不知道如何适应这种情况。

这是我必须抓住撇号的内容:

else if (ch == '\'')
                {

#if 1           
                    printf("Comparing Apostrophe\n");
#endif
                    continue;

                }

请注意,它是更大程序的一部分,我不能向您展示。这解释了“else if”离子的开始。

谢谢。

4

3 回答 3

3

如果你的撇号看起来像''',那么你应该只检查'''字符,它不会为你做。那是一个不同的字符 - 看起来像扩展的 ASCII 字符 146(十进制),“右单引号”。该文本可能来自 MS Office - 它喜欢将单引号和双引号转换为单引号和双引号,即所谓的“智能”引号(如果您在 Office 之外对文本执行任何操作,则不会。)已经指出,“左单引号”,ascii 字符 145,是同一组的另一半,因此您的文本中可能也有一些。IE:

else if (ch == '\'' || ch == '’' || ch == '‘')
{
    [do stuff]
}
于 2013-10-07T17:12:46.397 回答
1

对于宽字符 wchar_t 添加 L


else if (ch == L'\'' || ch == L'’' || ch == L'‘')
{
    [do stuff]
}
于 2019-01-05T15:00:30.713 回答
0

您可以使用 ascii 数字作为撇号,而不是使用转义字符,即 39: else if (ch == 39)

于 2013-10-07T17:13:57.257 回答