c++ - 如何检查字符串中是否不存在char
问题描述
假设我们让用户输入一个字符串名称,"william"
然后用户输入他们想要查找索引的字符。
using namespace std;
string name;
char characterToFind;
cout << "Enter a name ";
cin >> name;
cout << "Enter a character to find ";
cin >> characterToFind;
然后我们想在name
字符串数组中找到字符的索引。
for (int j = 0; j < name.length(); j++) {
if (name[j] == characterToFind) {
cout << "char is at index: " << j << endl;
}
}
然后如何检查name
字符串数组中是否不存在输入的字符?我尝试执行以下操作:
if (characterToFind != name.find(characterToFind)) {
cout<< "doesnt exist" << endl;
}
即使输入的字符存在于name
字符串数组中,if 语句似乎总是为真并运行代码。
解决方案
我的方法的问题是我正在做的是在 if 条件下我正在检查 's' 字符与数组的索引位置。
相反,做:
if (name.find(characterToFind) == std::string::npos) {
cout << "doesnt exist" << endl;
}
这是检查字符输入是否等于不存在的位置!这是真的,所以它告诉用户输入的字符不存在。
推荐阅读
- django - Nginx 服务 css,但只有一半
- spring-restdocs - 有什么方法可以隐藏或不显示 Model 中的某些字段,但我的 Rest docs Payload 中不需要
- python - Python 3.x 四舍五入
- flutter - 每次屏幕发生变化时都会调用屏幕的构造函数
- entity-framework - 我应该在原始查询后关闭实体框架 dbcontext 连接吗?
- c++ - 使用 Visual Studio 2017 分析 dll 源代码
- python - 在 sympy 中确定 z = Uniform(0,1) * Uniform(1,2) 的密度时出现 TypeError
- hazelcast - Hazelcast 嵌入式拓扑 | 延迟随着集群中节点数量的增加而增加
- android - GeckoView Android Pixel 2 错误
- deep-linking - 每次在branch.io中调用redeemRewards函数时都会显示错误消息