C++ 在向量上使用strcmp

C++ 在向量上使用strcmp,c++,string,char,strcmp,C++,String,Char,Strcmp,我有一个字符串向量,我想比较向量的第一个元素和一堆不同的“字符串” 以下是我想做的: if (strcmp(myString[0], 'a') == 0) 但是strcmp不起作用。我基本上想用一堆不同的字符来检查myString[0]的内容,看看是否有匹配。所以会是这样的 if (strcmp(myString[0], 'a') == 0){ } else if (strcmp(myString[0], 'ah') == 0){ } else ifif (strcmp(myString[0]

我有一个字符串向量,我想比较向量的第一个元素和一堆不同的“字符串”

以下是我想做的:

if (strcmp(myString[0], 'a') == 0)
但是strcmp不起作用。我基本上想用一堆不同的字符来检查myString[0]的内容,看看是否有匹配。所以会是这样的

if (strcmp(myString[0], 'a') == 0){
}
else if (strcmp(myString[0], 'ah') == 0){
}
else ifif (strcmp(myString[0], 'xyz') == 0)
等等


我可以用什么做这个比较?编译器抱怨“从std:string到“constant char*”没有合适的转换,所以我知道我不喜欢这样做,但我不知道如何正确地进行比较。

不是字符串,而是字符常量。您需要使用
“a”
“ah”
“xyz”“

此外,如果您想使用strcmp,您需要使用:

if (strcmp(myString[0].c_str(), "a") == 0)
您还可以使用重载的
运算符==
std::string
char const*
进行比较

if (myString[0] == "a")

'a'
不是字符串,而是字符常量。您需要使用
“a”
“ah”
“xyz”
,等等

此外,如果您想使用strcmp,您需要使用:

if (strcmp(myString[0].c_str(), "a") == 0)
您还可以使用重载的
运算符==
std::string
char const*
进行比较

if (myString[0] == "a")

std::string
重载
运算符==
以进行字符串比较,因此

if (strcmp(cString, "other string") == 0)

因此,您的代码变成(例如)


std::string
重载
运算符==
以进行字符串比较,因此

if (strcmp(cString, "other string") == 0)

因此,您的代码变成(例如)


您已将此帖子标记为C++。< /P> 将向量的第一个元素与一组不同的元素进行比较 “字符串”

如果我正确地阅读了您的文章,那么向量的第一个元素是std::string

string有一个函数和一个运算符用于字符串到字符串的比较

该函数的使用方式如下:

if (0 == pfnA.compare(pfnB))
如cppreference.com所述:

std::string.compare(std::string)的返回值为

  • 如果*为负值,则按字典顺序显示在参数指定的字符序列之前

  • 如果*为正值,则该值按字典顺序出现在参数指定的字符序列之后

  • 如果两个字符序列比较相等,则为零


操作符==(),当两个字符串相同时返回true。< /P> < P>,您已经将此帖子标记为C++。 将向量的第一个元素与一组不同的元素进行比较 “字符串”

如果我正确地阅读了您的文章,那么向量的第一个元素是std::string

string有一个函数和一个运算符用于字符串到字符串的比较

该函数的使用方式如下:

if (0 == pfnA.compare(pfnB))
如cppreference.com所述:

std::string.compare(std::string)的返回值为

  • 如果*为负值,则按字典顺序显示在参数指定的字符序列之前

  • 如果*为正值,则该值按字典顺序出现在参数指定的字符序列之后

  • 如果两个字符序列比较相等,则为零

如前所述,当两个字符串相同时,运算符==()返回true。

“a”
不同于
'a'
“a”
不同于
'a'