为什么在 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";
}