2017-02-14 27 views
1

所以基本上我的功能經過的每個字符的字符串,並插入每個字符到另一個字符串,所以它導致初始字符串被逆轉。我已經看了在線,但在回答這個問題似乎不工作了,我不知道這是否是因爲他們是從5+年前還是我越來越不對勁的地方。我的代碼是這樣的:無法在字符串中插入字符

long reverse_num(long n){ 

    string new_str = ""; 
    string my_str = to_string(n); 
    int my_int; 

    for (unsigned i = 0; i < my_str.size(); ++i){ 
     new_str.insert(0, char my_str[i]); 
    } 
    my_int = stol(new_str); 

    return my_int; 
} 

給出的錯誤是:預期之前 '字符' new_str.insert基本表達式(0,炭my_str [I]);

我在做什麼錯? 謝謝!

+0

哇...有人真的* *試圖使用真正的C++語言,而不是一些人爲限制類C「型」! –

+0

哈哈哈,是啊,想:P我只是討厭當我無法想出答案我自己,或者至少得到什麼,我做錯了的想法。 – Alex

+0

你的問題是** **遠遠比大多數「C++」用戶發佈的具有極低的代表問題的更好。 –

回答

1

首先,你不應指定在插入表達char類型。另外,沒有一個字符串插入函數可以匹配你在這裏做的事情;你可能想其中的一個:

basic_string& insert(size_type pos, size_type n, charT c); 
iterator insert(const_iterator p, charT c); 

所以你插入線應該是其中之一:

new_str.insert(0, 1, my_str[i]); 
new_str.insert(new_str.begin(), my_str[i]); 
+0

Omg,太簡單了!它現在像一種魅力。非常感謝! – Alex

0

你的類型轉換語法很糟糕,但你似乎是在試圖插入一個char成的std :: string。這是你出現了功能是想爲:

http://en.cppreference.com/w/cpp/string/basic_string/insert

basic_string的&插入(SIZE_TYPE指數,SIZE_TYPE計數,圖CH);

嘗試

new_str.insert(0,1,my_str [I]);

你也可以使用了http://en.cppreference.com/w/cpp/algorithm/reverse

的std ::反向(my_str.begin(),my_str.end());

+0

謝謝!是的,我看到了相反的情況,我只是想嘗試一下這樣做,哈哈。 – Alex