为什么这个字符串没有转换为整数?

Why this string is not converting to Integer?

我正在尝试将字符串 r 转换为 int(num)。但它一直返回 0。注意:当我返回字符串时,答案(反转数字)是正确的。我的代码如下所示:


string n, r = "";
        cin >> n;

        for (int i = n.length(); i >= 0; i--)
        {
            r += n[i];
        }

        int num;

        istringstream(r) >> num;

        cout << num << endl;

字符n[n.length()]的值等于'[=16=]'

也就是当下标运算符的索引等于字符串的大小时那么它returns对类型对象的引用 具有值 charT() 的 charT,其中修改对象会导致未定义的行为。"(C++ 标准)

因此您的反转字符串以终止零开头。

按以下方式重写您的 for 循环

    for ( auto i = n.length(); i != 0;  )
    {
        r += n[--i];
    }

    for ( auto i = n.length(); i != 0; --i )
    {
        r += n[i - 1];
    }

当然,您可以只写

而不是 for 循环
r.assign( n.rbegin(), n.rend() );

注意变量r初始化为空字符串

string n, r = "";

是多余的。你可以只写

string n, r;