c++ - 如果字符串是数字,字符串的比较运算符如何在 C++ 中工作?

标签 c++ string comparison

如果字符串是数字并且具有相同的位数,请告诉我小于、大于运算符如何用于字符串。这些运算符究竟是如何工作的?

例如,对于下面的比较-

cout<<("3" > "5")<<endl;
cout<<("31" > "25")<<endl;
cout<<("35" > "35")<<endl;
cout<<("38" > "85")<<endl;
cout<<("53" > "55")<<endl;
cout<<("36" > "35")<<endl;
cout<<("53" > "54")<<endl;

我从 CodeBlocks 得到的输出是-

0
0
0
0
0
0
0

最佳答案

您的代码的行为未定义。

为了比较,您输入的 const char[] 文字会分解为 const char* 指针。

并且指针比较运算符的行为仅在指针是同一数组的一部分时才定义;而你的不是。

如果你用 s 作为后缀,例如 "3"s 然后 C++14 以后会将其视为 std::string 并执行词法比较。

关于c++ - 如果字符串是数字,字符串的比较运算符如何在 C++ 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47912067/

相关文章:

c# - 如何转义多行字符串

c++ - 使用右值的比较函数

c++ - 调试优化代码的陷阱是什么?

c++ - 具有宽松内存顺序的 fetch_add 会返回唯一值吗?

c++ - Lapack 例程 dstev 中的段错误

c++ - 为什么全局定义 "const Date default_date(1970,1,1);"是坏的?

java - Switch 语句不接受字符串变量

java - Java中如何控制位数据

comparison - Prestashop 与 Zen-Cart 和 osCommerce 相比

c# - 比较两个列表并删除相同的结果c#