我找不到如何在C ++中实现设计。在Delphi的语言中,操作员可以编写以下设计:
case s[j] of
'0'..'9','A'..'Z','a'..'z','_': doSomeThing();
我如何在c ++中做同样的事情。吸引我的是建筑类型'a'..'z'等等......
谢谢
答案 0 :(得分:5)
您可以使用isalnum函数执行此操作:
if(isalnum(s[j]) || (s[j] == '_') )
答案 1 :(得分:2)
你不会在C ++中使用switch / case语句。 C ++还提供预构建的函数来测试大部分内容,因此你可以使用类似的东西:
if (isalnum(s[j]) || s[j]=='_')
doSomething();
答案 2 :(得分:2)
简短的回答是,这是不可能的。您可以模拟这样的值列表:
switch (s[j])
{
case '0':
case '1':
case '2':
case '3':
doSomething1();
break;
case 'a':
case 'b':
case 'c':
case 'd':
doSomething2();
break;
}
但您无法指定范围。如果需要范围,则应使用if-else-if:
if ( (s[j] >= '0') && (s[j] <= '9'))
doSomething1();
else if ( (s[j] >= 'a') && (s[j] <= 'z'))
doSomething2();
无论如何,如果比 switch 更安全: - )
答案 3 :(得分:1)
你也可以试试这个:
const std::string char_set("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");
if (char_set.find(s[j] != std::string::npos)
{
doSomething();
}