簡體   English   中英

使用stringstream將int解析為string

[英]Parse int to string with stringstream

好!

我對這個問題感到非常愚蠢,而且我完全不介意我是否因為這個而被投票,但我想如果我至少沒有認真嘗試尋找解決方案,我就不會發布這個問題。

我正在研究歐拉問題4,找到兩個三位數[100..999]的最大回文數。

正如你可能猜到的那樣,我正處於我必須使用我所做的整數的部分。 我查了幾個站點,看到了一些將Int轉換為String的標准,其中一個包括stringstream。

所以我的代碼看起來像這樣:

//  tempTotal is my int value I want converted.
void toString( int tempTotal, string &str )
{ 
    ostringstream ss;            // C++ Standard compliant method.
    ss << tempTotal;
    str = ss.str();              // Overwrite referenced value of given string.
}

而調用它的函數是:

else
{
    toString( tempTotal, store );
    cout << loop1 << " x " << loop2 << "= " << store << endl; 
}

到現在為止還挺好。 我不能真正看到我寫的錯誤,但輸出給了我一些地址。 它保持不變,所以我真的不知道程序在那里做了什么。

其次,我嘗試了.ToString(),string.valueOf(tempTotal),(string)tempTotal,或者只是store = temptotal。

所有人都拒絕工作。 當我只是嘗試使用store = tempTotal進行隱式轉換時,它根本沒有給我一個值。 當我嘗試檢查輸出時,它幾乎沒有打印。 我不知道是否有任何東西被復制到我的字符串中,而這些字符串不是可打印字符,或者編譯器是否忽略了它。 我真的不知道。

所以即使我覺得這是一個非常非常蹩腳的問題,我只需要問:

如何使用stringstream將該愚蠢整數轉換為字符串? 其他嘗試或多或少與我無關,我只是想知道為什么我的stringstream解決方案無效。

編輯:

哇。 認真。 這有點令人尷尬。 我忘了將tempTotal變量設置為某個東西。 它是未初始化的,因此我無法復制任何內容以及程序給我0或根本沒有任何東西的原因。

希望人們可以笑一笑,所以我認為這個問題現在更適合刪除,因為它除了xD之外並不真正有用,但感謝所有試圖幫助我的人!

你試過按原樣輸出整數嗎? 如果你只是將它轉換成一個字符串來輸出它,那么不要打擾,因為cout會為你做這件事。

else
{
    // toString( tempTotal, store ); // Skip this step.
    cout << loop1 << " x " << loop2 << "= " << tempTotal << endl; 
}

我覺得tempTotal很可能沒有你認為它具有的價值。

我知道這不能直接回答你的問題,但你不需要編寫自己的轉換函數,你可以使用boost

#include <boost/lexical_cast.hpp>
using boost::lexical_cast;

//usage example
std::string s = lexical_cast<std::string>(tempTotal);

請嘗試以下方法:

string toString(int tempTotal)
{ 
    ostringstream ss;
    ss << tempTotal;
    return ss.str();
}

string store = toString(tempTotal);

如果要輸出整數,則甚至不需要轉換它; 只需將其插入標准輸出:

int i = 100;
cout << i;

如果你想要字符串表示,那你就做得很好。 像你一樣將它插入到str() ,並詢問它的str()

如果這不起作用,我建議你最小化代碼量,並嘗試使用調試器查明實際問題:)

簡短回答:將int轉換為字符串的方法有效。 還有其他問題嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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