我在字符串中有一些文本,我需要检查该特定字符串是否包含任何不允许创建单词的字符。
假设我有“(hello}”
之类的文字这里它包含符号'('和'}'。我怎么能用C ++做呢。字符串可能包含任何unicode字符。
答案 0 :(得分:4)
如果字符串确实包含Unicode(UTF-8),那么问题就在于此
非平凡;你可能想要使用一些外部库,比如
ICU。或者您可以转换为wchar_t
(wstring
),然后使用单曲
下面的字节编码解决方案:
如果字符是单字节编码,则std::find_if
使用
合适的谓词应该做到这一点。如果你正在做任何文字
解析时,你需要定义一组这样的谓词,一次和for
所有;谓词可以使用std::ctype
方面的函数
locale
,或wctype.h
中的'\''
(使用全局区域设置)。
但是,如果你正在处理Unicode,甚至转换为宽 字符可能不够,因为完整的Unicode仍然可以使用多个 一个代码点代表一个字符。真正的问题是 你想要做多严肃(请注意,在许多语言中, 像英语或法语,“单词”可以包含Unicode的字符 考虑标点符号,例如“不要”或“aujourd'hui” - Unicode 表格会告诉您{{1}}是标点符号,而不是单词的一部分。)
答案 1 :(得分:1)
std::isalpha
(以及相关的is*
朋友)会对字符类型进行模板化,并接受语言环境以提供更好的本地化能力。我只是迭代string
或wstring
并使用is*
函数来指示您感兴趣的行为(我不知道您想要允许哪些字符并且不接受问题陈述。)
答案 2 :(得分:0)
使用std::wstring
和std::iswalpha()
。