在向量上使用 strcmp
Using strcmp on a vector
我有一个字符串向量,我想将向量的第一个元素与一堆不同的"strings"进行比较。
这是我想做的:
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)
等..
我可以用什么来做这个比较?编译器抱怨 "no suitable conversion from std:string to "constant char*" exists 所以我知道它不喜欢我做一个字符串到字符的比较,但我不知道如何正确地做到这一点。
'a'
不是字符串,是字符常量。您需要使用"a"
、"ah"
、"xyz"
等
另外,如果要使用strcmp
,需要使用:
if (strcmp(myString[0].c_str(), "a") == 0)
您还可以使用重载 operator==
来比较 std::string
和 char const*
。
if (myString[0] == "a")
std::string
重载 operator==
进行字符串比较,因此等同于
if (strcmp(cString, "other string") == 0)
是
if (cppString == "other string")
所以你的代码变成了(例如)
else if (myString[0] == "ah")
您已将此 post 标记为 C++。
compare the first element of the vector with a bunch of different
"strings".
如果我没看错你的 post,向量的第一个元素是 std::string。
std::string 有一个函数和一个运算符用于字符串到字符串的比较。
函数用法如下:
if (0 == pfnA.compare(pfnB))
如cppreference.com所述:
来自 std::string.compare(std::string) 的 return 值是
如果 *this 按字典顺序出现在参数指定的字符序列之前,则为负值
如果 *this 按字典顺序出现在参数指定的字符序列之后,则为正值
如果两个字符序列比较相等则为零
运算符==() 如前所述,return当两个字符串相同时为真。
我有一个字符串向量,我想将向量的第一个元素与一堆不同的"strings"进行比较。
这是我想做的:
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)
等..
我可以用什么来做这个比较?编译器抱怨 "no suitable conversion from std:string to "constant char*" exists 所以我知道它不喜欢我做一个字符串到字符的比较,但我不知道如何正确地做到这一点。
'a'
不是字符串,是字符常量。您需要使用"a"
、"ah"
、"xyz"
等
另外,如果要使用strcmp
,需要使用:
if (strcmp(myString[0].c_str(), "a") == 0)
您还可以使用重载 operator==
来比较 std::string
和 char const*
。
if (myString[0] == "a")
std::string
重载 operator==
进行字符串比较,因此等同于
if (strcmp(cString, "other string") == 0)
是
if (cppString == "other string")
所以你的代码变成了(例如)
else if (myString[0] == "ah")
您已将此 post 标记为 C++。
compare the first element of the vector with a bunch of different "strings".
如果我没看错你的 post,向量的第一个元素是 std::string。
std::string 有一个函数和一个运算符用于字符串到字符串的比较。
函数用法如下:
if (0 == pfnA.compare(pfnB))
如cppreference.com所述:
来自 std::string.compare(std::string) 的 return 值是
如果 *this 按字典顺序出现在参数指定的字符序列之前,则为负值
如果 *this 按字典顺序出现在参数指定的字符序列之后,则为正值
如果两个字符序列比较相等则为零
运算符==() 如前所述,return当两个字符串相同时为真。