为什么这个字符串没有转换为整数?
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;
我正在尝试将字符串 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;