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)的返回值为
- 如果*为负值,则按字典顺序显示在参数指定的字符序列之前
- 如果*为正值,则该值按字典顺序出现在参数指定的字符序列之后
- 如果两个字符序列比较相等,则为零
“a”
不同于'a'
“a”
不同于'a'
。