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