子str为char的c++无数组
substr to char c++ no array
就像标题所说的,我试图将子字符串转换为字符。最终,我要做的是告诉substr是大写字母还是小写字母,我得到的提示是,最好的方法是使用ascii值。这是我的
for(int i = 0; i<length; i++){
char a = a.substr(i,1);
if(a>=65&&a<=90){
uppercase++;
}
}
我在这里得到这个错误:
string_info.cpp:34:16: error: member reference base type 'char' is not a
structure or union
char a = a.substr(i,1);
我知道它不工作,因为substr输出一个字符串而不是一个字符,但我不明白的是如何得到这些ascii值的控制。有人有什么想法吗?
为什么一定要使用substr呢?你的代码基本上就是一个字符一个字符地遍历字符串。您可以使用[]
或at
for (int i=0;i<a.length();i++) {
char c = a[i];
/*
Can also use
char c = a.at(i);
*/
if (c >= 'A' && c <= 'Z') {
uppercase++;
}
}
还请注意您的char a = a.substr(i, 1);
代码是错误的,因为substr
返回string
,您也重新声明a
。
与其使用substr, at或操作符[],我建议使用基于范围的for循环:
std::string a = "Test";
int uppercase = 0;
for(const auto& c : a)
{
if (c >= 'A' && c <= 'Z')
uppercase++;
}
与其使用ASCII值,不如使用isupper函数:
std::string a = "Test";
int uppercase = 0;
for (const auto& c : a)
{
if(isupper(c))
uppercase++;
}
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 使用strcpy将char数组的元素复制到另一个数组
- 使用指针从C++中的数组中获取最大值
- C++使用整数的压缩数组初始化对象
- 告诉一个 const char 数组,除了编译时 C 样式的字符串外,它不以 '