c++ - string.length() 造成麻烦

标签 c++ string

我真的被这个简单的问题搞糊涂了。 这是我的代码:

#include <iostream>
#include <string>

int main()
{
    std::string str = "bb";
    int counter;
    for (counter = str.length() - 1;  counter >= str.length() - 2;  counter--)
    {
        std::cout << "counter: " << counter << std::endl;
    }
}

基本上,它应该只打印两行然后终止程序,但它会继续打印行。事实上,循环并没有在 counter = -1 处停止,这很奇怪!为什么会这样?

最佳答案

std::string.length() 是无符号的,所以 counter >= str.length() - 2 中的 counter 被转换为无符号值,公式不成立。

尝试使用 counter + 2 >= 0 && counter + 2 >= str.length() 代替。

关于c++ - string.length() 造成麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36602148/

相关文章:

java - 如何将不明确的字符串解析为日期?

c - 如何将随机生成的字符添加到 C 中的字符串中?

C++11 字符串属性和 gcc 版本

C++ 高阶函数

c++ - 使用 strlen 时出错

c++ - 在特定时间在 qglwidget 上绘制一个矩形

c++ - 了解 POSIX select() 和读写 fd_set

c++ - 通过构造函数将值传递给 std::ifstream

c++ - Eclipse for c 设置,无法找到 stdio.h

c++ - 从文件中读取十六进制数据