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