提问人:vgl 提问时间:5/27/2019 最后编辑:vgl 更新时间:5/27/2019 访问量:72
遍历 std::string 时如何获取没有数字的字符?
How to get character without numbers when iterating through std::string?
问:
我正在尝试遍历通过引用传递的 std::string 中的每个字符,并将其与字符串向量的第一个元素进行比较。
#include <iostream>
#include <vector>
bool letterFound (const std::string &s){
std::vector<std::string> vLetters = {"A", "B", "C"};
for (auto &letter : s) {
if (&letter == vLetters[0]) {
return true;
}
}
return false;
}
int main() {
std::string result = letterFound("AB")
? "Letter [A] found"
: "Letter not found";
std::cout << result << std::endl;
return 0;
}
如果只有一个字母“A”传递给函数,则找到字母,但是如果我传递多个字母,例如“AB”,则要比较的第一个字符的实际值是“65 'A'”,而不是“A”。第二个字符是“66 'B'”。
如何在没有这些数字的情况下从字符串中获取一个字母进行比较?
更新:如果出现以下情况,将找到信件
std::vector<std::string> vLetters = {"A", "B", "C"};
更改为
std::vector<char> vLetters = {'A', 'B', 'C'};
但是,很高兴知道如何在不更改字符串向量的情况下更改代码。
答:
1赞
Aykhan Hagverdili
5/27/2019
#1
&letter
是一个 . 是指针世界中的一种特殊类型。它被视为指向 C 样式 NULL 终止字符数组的指针。 尝试形成一个 from ,它不是以 NULL 结尾的。因此,未定义的行为。char*
char*
&letter == vLetters[0]
std::string
&letter
评论
&letter == vLetters[0]
毫无意义A
0100 0001
65
0100 0001
0100 0001
0100 0001