2011-03-05 94 views
1

我在写一个C++程序。我有一个char数组trans [20] [100]。实际上,每个trans的字符串都是语法(编程语言翻译器)的转换。我想检查每个字符串是否在'。'之后有非终端。即我想检查是否在字符串中有'。'之后是任何大写字母。任何人都可以请告诉我该怎么做?
- 预先感谢识别字符串中的下一个字符是否大写

+0

请不要告诉我在C++中使用字符串。我只需要帮助。 – Antrromet 2011-03-05 12:53:07

+0

你可以发布一些你已经尝试过的代码吗?或者更确切地说你的具体问题是什么? – Kai 2011-03-05 13:03:11

回答

1

如果你的ASCII字符操作,那么你可以测试是否字符的int值在65到90之间见the ASCII table

+1

为了便于阅读,最好将'char'文字'A'和'Z'进行比较。 – 2011-03-05 14:28:19

4

您可以使用任何RegExp库(例如this one)。测试正则表达式是/\.[A-Z]/

或为ASCII字符串,你可以使用:

int strHasDotCap(const char *s) 
{ 
    while (*s) { 
     if (*s++ == '.') { 
      if (*s >= 'A' && *s <= 'Z') return 1; 
     } 
    } 
    return 0; 
} 
+3

正则表达式是标记化的一个好主意(这似乎是OP所要做的),但对于这种简单的东西来说,这是一个简单的矫枉过正。 – delnan 2011-03-05 13:04:17

3

如果字符是ASCII类型,则可以使用ctype.h中的函数isAlpha(),isUpper()等。