简体   繁体   中英

Using strcmp on a vector

I have a vector of strings and I want to compare the first element of the vector with a bunch of different "strings".

Here is what i wanted to do:

if (strcmp(myString[0], 'a') == 0)

but strcmp doesnt work. I basically want to check the contents of myString[0] with a bunch of different characters to see if there is a match. So it would be something like

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

etc..

What can i use to do this comparison? Compiler complains about "no suitable conversion from std:string to "constant char*" exists so i know it doesnt like that im doing a string to char comparison, but i cant figure out how to correctly do this.

std::string overloads operator== to do a string comparison, so the equivalent to

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

is

if (cppString == "other string")

So your code becomes (for example)

else if (myString[0] == "ah")

'a' is not a string, it is a character constant. You need to use "a" , "ah" , "xyz" , etc.

Also, if you want to use strcmp , you need to use:

if (strcmp(myString[0].c_str(), "a") == 0)

You can also use the overloaded operator== to compare a std::string with a char const* .

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

You have marked this post as C++.

compare the first element of the vector with a bunch of different "strings".

If I am reading your post correctly, the first element of the vector is a std::string.

std::string has a function and an operator to use for string-to-string comparison.

The function is used like:

if (0 == pfnA.compare(pfnB))

As described in cppreference.com:

The return value from std::string.compare(std::string) is

  • negative value if *this appears before the character sequence specified by the arguments, in lexicographical order

  • positive value if *this appears after the character sequence specified by the arguments, in lexicographical order

  • zero if both character sequences compare equivalent

The operator==() as already described, returns true when the two strings are the same.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM