C ++中的中间值

时间:2010-03-28 05:14:06

标签: c++

我找不到如何在C ++中实现设计。在Delphi的语言中,操作员可以编写以下设计:

    case s[j] of
         '0'..'9','A'..'Z','a'..'z','_': doSomeThing();

我如何在c ++中做同样的事情。吸引我的是建筑类型'a'..'z'等等......

谢谢

4 个答案:

答案 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();
}