我为我的程序获得了以下代码的帮助。我正在工作,谢谢'paxdiablo'。它仍然在结果中显示'\'字符。我该如何解决? (不知道如何回复'paxdiablo'给sya谢谢。
if (strchr (",.();:-\"&?%$![]^@~`{}_<>/#*_+=", curChar) != NULL)//new change
{
paragraph.erase(subscript, 1);
numWords-=1;
}
else
subscript+=1;
}
答案 0 :(得分:5)
不是C专家,但尝试转义\
if (strchr ("\\,.();:-\"&?%$![]^@~`{}_<>/#*_+=", curChar) != NULL)//new change
答案 1 :(得分:2)
查看您匹配的字符串中是否包含\"
?
这是一个转义序列。它告诉C ++编译器,“我希望"
符号在此字符串文字中”。您必须以这种特殊方式说出这一点,因为通常"
标记字符串的结尾。
\
字符是特殊的,因为它启动所有这些转义序列。因此,如果您希望它出现在字符串中,您也必须使用转义序列。否则,编译器会认为您正在启动其他转义序列。
奇怪的是,\
的转义序列是\\
。
答案 2 :(得分:1)
如果你想删除'\',你想要这样做:
if (strchr (",.();:-\\\"&?%$![]^@~`{}_<>/#*_+=", curChar) != NULL)
原始行的原因是\"
实际上是"
的转义。要添加实际\
,您需要执行\\
以逃避它。
答案 3 :(得分:1)
\
是一个转义字符(它正在逃避&#34;)。将\\
添加到您的字符串中,它应该可以正常工作。
if (strchr (",.();:-\"&?%$![]^@~`{}_<>/#*_+=\\", curChar) != NULL)
答案 4 :(得分:1)
尝试转义它:\\
而不仅仅是\