c++ - 无法比较 C++ 中字符串上使用的计数函数?
问题描述
这是代码:
#include <iostream>
#include <ostream>
#include <bits/stdc++.h>
#include <string>
int main(){
std::string num {"hello"};
std::string num1 {"hii"};
int nums = std::count(num.begin(),num.end(),num[0]);
int nums1 = std::count(num1.begin(),num1.end(),num1[0]);
std::cout << std::count(num1.begin(),num1.end(),num1[0] ) == count(num.begin(),num.end(),num[0]);
std::cout << nums == nums1 ;
return 0;
}
如果有人知道问题,请帮助。更新......
解决方案
要使用==
inoperator <<
我们需要在此处添加括号,因为重载运算符 << 具有比比较运算符更高的优先级。如果你使用现代编译器,它会给你详细的提示,比如 clang 11 会给使用这样的警告:
warning: overloaded operator << has higher precedence than comparison operator [-Woverloaded-shift-op-parentheses]
然后我们可以将其修复为:
#include <algorithm>
#include <iostream>
#include <ostream>
#include <string>
int main() {
std::string num{"hello"};
std::string num1{"hii"};
std::size_t nums = std::count(num.begin(), num.end(), num[0]);
std::size_t nums1 = std::count(num1.begin(), num1.end(), num1[0]);
std::cout << (std::count(num1.begin(), num1.end(), num1[0]) ==
count(num.begin(), num.end(), num[0]));
std::cout << (nums == nums1);
return 0;
}
推荐阅读
- android - 如何在android studio中记录文本文件上的按钮推送?
- react-native - React Native 开关 - 在数据库中将值保存为“是”/“否”而不是“真”/“假”
- azure - 如何在 Azure 容器实例中编辑 /etc/hosts?
- pm2 - pm2 - 文件保存时重新启动(pm2 日志)
- http - HTTP 1.1 是否允许在请求仍然流式传输块时发送响应?
- amazon-web-services - AWS CodeBuild Docker 镜像作为基础镜像
- cordova - 冲突 cordova-plugin-googleplus 和 phonegap-plugin-push
- reactjs - 无法读取未定义的属性“XYZ” – 绑定问题
- node.js - Firebase Admin SDK - 错误:“提供给 initializeApp() 的凭据实现”
- r - 使用 ggplot 的 R 条形图