[英]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()]
的值等於'\0'
也就是說,當下標運算符的索引等於字符串的大小時,它“返回對 charT 類型的 object 的引用,其值為 charT(),其中修改 object 會導致未定義的行為。” (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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.