你能比较一个字符串和一个向量的字符串吗?

Can you compare a string and a string from a vector?

提问人:Travis Games 提问时间:12/2/2022 最后编辑:Remy LebeauTravis Games 更新时间:8/4/2023 访问量:163

问:

我是C++的新手。每当我尝试比较一个字符串和一个向量中的字符串时,它都会给我一个错误。我在下面列举了两个例子。为什么会这样?

#include <iostream>
#include <vector>
#include <string>

int main() {
  std::string vowels = ("aeiou");
  std::string whale_talk = "turpentine and turtles";
  std::vector<std::string> result;
  for (int i = 0; i < whale_talk.size(); i++) {
    for (int x = 0; x < vowels.size(); x++) {
      if (whale_talk[i] == vowels[x]) {
        std::cout << whale_talk[i];
        result.push_back(whale_talk[i]);
        // I'm aware I'm not comparing two vectors, I added this to show that most interaction with strings will also result in an error
      }
    }
  }
}
#include <string>
#include <iostream>
#include <vector>

int main() {
  std::vector <std::string> string_vector;
  std::string string = "Hello";
  std::cout << "What do you want today?";
  string_vector = {"pickles"};
  if (string[2] == string_vector[0]) {
    std::cout << "No pickles today";
  }
  else {
    std::cout << "We only have pickles";
  }
}

我尝试添加和删除,但这没有帮助。在将字符串与字符串进行比较之前,我还尝试将字符串放入向量中。#include <string>

C++ 字符串 if 语句 向量 iostream

评论

10赞 Wyck 12/2/2022
当您发现自己在写“它给了我一个错误”时,请始终确保您在问题中包含了确切的错误消息。
4赞 Wyck 12/2/2022
非常简短地说:当你有一个字符串时,是一个,而不是另一个字符串。所以推送 ,这是一个 into ,它是 的数组,是一个类型不匹配。你的编译器应该以非常详细的方式抱怨这一点,不是吗?foofoo[i]charwhale_talk[i]charresultstring
3赞 n. m. could be an AI 12/2/2022
在第一个示例中,您不是在比较字符串,而是在比较单个字符。这本身不是问题,但是您正在尝试将字符推送到字符串向量。字符不是字符串。在第二个示例中,您尝试比较字符串和字符。
0赞 john 12/2/2022
如果是字符串,则是字符,而不是字符串。你说你正在将字符串与字符串进行比较,但你不是。strstr[i]

答:

-1赞 litoma 12/2/2022 #1
#include <iostream>
#include <vector>
#include <string>

int main() {
    std::string vowels = ("aeiou");
    std::string whale_talk = "turpentine and turtles";
    std::string result; 
    //std::vector<std::string> result;
    for (unsigned int i = 0; i < whale_talk.size(); i++) {
        for (unsigned int x = 0; x < vowels.size(); x++) {
            if (whale_talk[i] == vowels[x]) {
                std::cout << whale_talk[i];
                result.push_back(whale_talk[i]);
                // I'm aware I'm not comparing two vectors, I added this to show that most interaction with strings will also result in an error
            }
        }
    }
}
1赞 Hudson 12/30/2022 #2

问题 1:

result.push_back(whale_talk[i]);

这可能是第一个示例中代码的问题,因为尽管 whale_talk 是一个字符串,但使用 the 从中获取一个字符,然后您尝试将其添加到字符串向量结果中。这会在 char 和 string 之间造成类型不匹配,这可能会造成您的错误。如果要在向量结果中输入整个whale_talk字符串,只需删除 .如果你只想输入字符,最好的方法可能是:operator[][i]

string temp;
temp = temp + whale_talk[i];
result.push_back(temp);

问题 2

if (string[2] == string_vector[0])

这可能是第二个示例中代码的问题,因为同样是一个字符,但它是字符串向量中的第一个字符串。您无法比较不同类型的 char 和 string,这可能会造成您的错误。如果要将字符串与 进行比较,只需删除 .string[2]string_vector[0]string_vector[0][2]

一般类型的问题可能是因为两个示例中存在的类型不匹配,因此请确保您比较的是向量中的字符串和单个字符串,而不是字符和字符串或字符串和向量。

评论

0赞 Hudson 12/30/2022
我希望这个答案对您有所帮助,Travis Games。如需更准确的答案,请在问题中发布您的确切错误行。