簡體   English   中英

為什么這個字符串沒有轉換為 Integer?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM