我今天遇到了一个非常简单但令人困惑的问题.
#include <iostream>
#include <string>
using namespace std;
int main(){
string str = "123";
string a = "1";
string b = "1";
cout << ((str[0]+"") == a) << endl;
cout << (a==str.substr(0,1)) << endl;
cout << (a==b) << endl;
}
Run Code Online (Sandbox Code Playgroud)
输出为:0 1 1
为什么第一个比较语句是假的?使用==运算符时,c ++如何比较两个字符串?
Mik*_*our 11
str[0]+""是一个相当奇怪的东西 - 你取第一个字符的数值(假定字符的ASCII编码为49 '1'),并将其添加到指向空字符串开头的指针.这会给你一个无效的指针和未定义的行为.
如果你想从第一个字符中创建一个字符串,那就是其中之一
string(1, str[0])
string(str, 0, 1)
str.substr(0, 1)
string() + str[0]
Run Code Online (Sandbox Code Playgroud)
哪个比较等于 a
| 归档时间: |
|
| 查看次数: |
315 次 |
| 最近记录: |