提问人:Skkk 提问时间:10/4/2022 更新时间:10/4/2022 访问量:79
比较 C++ 中的字符串 (.substr()) 和字符 (.back())
Comparing String (.substr()) to Character (.back()) in C++
问:
我正在尝试比较单词“A”的最后一个字母和单词“B”的下一个字母是否相同。
我正在迭代“B”;并在 if 语句中进行比较:
string A = ""
string B = "XYZTTTTLMN"
for (long i = 0; i < B.length(); i++) {
if ( A.back() != B.substr(i,1) ) { ... }
}
我收到一个错误,说我无法将字符串与字符进行比较。但是,据我所知,A.back() 返回一个字符,B.substr() 返回一个数字字符串,这应该可以吗?
关于我能做什么的任何想法?
非常感谢,谢谢!
答:
0赞
saurav
10/4/2022
#1
在 C++ 中,大小=1 的字符串与字符不同。 这就是您收到错误的原因,因为字符串和字符无法像您那样进行比较。
要解决此问题,您可以使用以下代码:
for (long i = 0; i < B.length(); i++) {
if ( A.back() != B.at(i) ) { ... }
}
或
for (long i = 0; i < B.length(); i++) {
if ( A.back() != B[i] ) { ... }
}
评论
0赞
Remy Lebeau
10/4/2022
当索引不能越界时,就没有必要使用。at()
0赞
saurav
10/4/2022
@RemyLebeau正确,这两种语法中的任何一种都可以在这里使用
0赞
Remy Lebeau
10/4/2022
我不是在评论语法,而是在评论功能。 在运行时执行边界检查,而不执行。当循环已经在处理边界检查时,使用只是浪费开销,没有收益。at()
operator[]
at()
上一个:优化 if 语句中的条件
下一个:如何立即检查一组对是否有逗号?
评论
B.substr(i,1).back()
?i
A.back() != B.at(i)
A
back