C ++检查字符串

时间:2013-10-07 00:25:41

标签: c++

假设我正在接受一个字符串,并想检查字符串中是否有大写字母。我从文件中输入字符串。如何使用ascii值将其分解以查看它是否具有大写值?谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用C ++算法库通过使用谓词(使用std :: isupper的包装版本)来查找字符串是否包含大写值:

#include <algorithm>
#include <iostream>
#include <string>
#include <cctype>

bool IsUpper (char c) {
    return std::isupper(c);
}

bool hasUpperCase (std::string str) {
    std::string::iterator it = std::find_if(str.begin(), str.end(), IsUpper);
    if (it != str.end()) {
        return true;
    }
    else {
        return false;
    }
}

int main() {
    std::string s = "This contains an uppercase character in it...";
    if (hasUpperCase(s)) {
        std::cout << "String s contains a least one uppercase character." << std::endl; 
    }
    else {
        std::cout << "String s does not contain any uppercase character." << std::endl; 
    }
}

here起,谓词是:

  

是一个C ++函数,返回boolean或bool对象的实例   operator()成员。一元谓词采取一个agrument,二进制 - 二,   问题谓词的例子可以特别回答   算法是:

     
      
  • 这个元素是我们要找的吗?
  •   
  • 我们的订单中是先按顺序排列两个参数中的第一个吗?
  •   
  • 这两个论点是否相等?
  •   
     

几乎所有的STL算法都将谓词作为最后一个参数。

因此,总而言之,这可以通过字符串中的每个字符对谓词函数起作用:IsUpper它本身使用std::isupper来检查有问题的字符是否为大写。如果是,则返回true,该字符存储在迭代器中。

参考文献:

http://en.cppreference.com/w/cpp/algorithm/find https://stackoverflow.com/a/5921826/866930