findを使うと先頭から何番目にその文字があるかを探すことができる
実行結果
18446744073709551615
0
存在しません
ちなみにこれらのコードはどれも同じ動作をする。autoの動作が原因。
if (str1.find("z") == 18446744073709551615) {
std::cout << "存在しません" << std::endl;
}
if (str1.find("z") == -1) {
std::cout << "存在しません" << std::endl;
}
if (str1.find("z") == std::string::npos) {
std::cout << "存在しません" << std::endl;
}
}
ソースコード
#include <iostream>
int main() {
std::string str1 = "abcde";
std::cout << str1.find("A") << std::endl;
std::cout << str1.find("a") << std::endl;
if (str1.find("z") == 18446744073709551615) {
std::cout << "存在しません" << std::endl;
}
if (str1.find("z") == -1) {
std::cout << "存在しません" << std::endl;
}
if (str1.find("z") == std::string::npos) {
std::cout << "存在しません" << std::endl;
}
}
コメント