2012-10-01 34 views
2

几个信号我想寻找一个字符串,它不等于“(”“)”,“&”位置‘|’,“!”‘’。如果我使用if(str[1] != "!" && str[1] != "(" ...),它太长了...有什么我可以用来使这个简单吗?入住一个字符串C++

回答

5

我认为你是在谈论find_first_not_ofstr.find_first_not_of("!(...")

+0

很好,谢谢! –

+0

不客气。 –

5
string badChars = "!()&|;"; 
if (badChars.find(str[1]) == string::npos) 
{ 
} 

编辑:我想我误解了问题。正如Michael Krelin指出的那样,find_first_not_of可能就是你想要的。

+0

呀,谢谢你〜 –

2

任何正则表达式引擎可匹配通过:

'([^()!&|;])' 
+4

有些人,当一个问题... – BoBTFish

+1

面临...建议对工作的工具?他/她正在匹配字符串,因此请使用世界上已知的字符串匹配系统。你可以从正则表达式运行,但你不能隐藏。 –

+0

@PhilH:也许它是解析而不是字符串匹配。此外,它似乎是第一个字符的位置是想要的。并非所有的正则表达式引擎都可以轻松访问这些信息。 – PlasmaHH