提问人:Travis Games 提问时间:12/2/2022 最后编辑:Remy LebeauTravis Games 更新时间:8/4/2023 访问量:163
你能比较一个字符串和一个向量的字符串吗?
Can you compare a string and a string from a vector?
问:
我是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>
答:
-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。如需更准确的答案,请在问题中发布您的确切错误行。
评论
foo
foo[i]
char
whale_talk[i]
char
result
string
str
str[i]