我正在嘗試將字串轉換為rint( 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;
uj5u.com熱心網友回復:
字符的值n[n.length()]等于'\0'
也就是說,當下標運算子的索引等于字串的大小時,它“回傳對值為 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;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/386257.html
上一篇:嵌套類的部分特化
下一篇:如何過濾繼承的物件?
