为什么在 C++ 中使用 strchr() 会出错?
Why did I get error by using strchr() in C++?
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
int main(){
string a="asdasd";
if(!strchr(a,'a')) cout<<"yes";
return 0;
}
刚开始学C++编程,不知道为什么会出现这一行的错误
if(!strchr(a,'a')) cout<<"yes";
但如果我尝试这样编写代码,它会 运行 非常好。
if(!strchr("asdasd",'a')) cout<<"yes";
我知道这是一个愚蠢的问题,但我真的不知道为什么..抱歉..
库函数 strchr
用于 C 风格的字符串,而不是 C++ string
类型。
当使用 std::string
时,最接近 strchr
的是 find
:
#include <iostream>
#include <string>
int main(){
std::string a="asdasd";
if(a.find('a') != std::string::npos) std::cout<<"yes";
}
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
int main(){
string a="asdasd";
if(!strchr(a,'a')) cout<<"yes";
return 0;
}
刚开始学C++编程,不知道为什么会出现这一行的错误
if(!strchr(a,'a')) cout<<"yes";
但如果我尝试这样编写代码,它会 运行 非常好。
if(!strchr("asdasd",'a')) cout<<"yes";
我知道这是一个愚蠢的问题,但我真的不知道为什么..抱歉..
库函数 strchr
用于 C 风格的字符串,而不是 C++ string
类型。
当使用 std::string
时,最接近 strchr
的是 find
:
#include <iostream>
#include <string>
int main(){
std::string a="asdasd";
if(a.find('a') != std::string::npos) std::cout<<"yes";
}