嘛!
我对这个问题感到非常愚蠢,我完全不介意我是否因为这个而被投票,但我想如果我至少没有认真尝试寻找解决方案,我就不会发布这个问题。
我目前正在研究欧拉问题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之外并不真正有用,但感谢所有试图帮助我的人!
答案 0 :(得分:4)
您是否尝试按原样输出整数?如果你只是将它转换成一个字符串来输出它,那么不要打扰,因为cout会为你做这件事。
else
{
// toString( tempTotal, store ); // Skip this step.
cout << loop1 << " x " << loop2 << "= " << tempTotal << endl;
}
我觉得tempTotal很可能没有您认为的价值。
答案 1 :(得分:2)
我知道这不会直接回答你的问题,但你不需要编写自己的转换函数,你可以使用boost
#include <boost/lexical_cast.hpp>
using boost::lexical_cast;
//usage example
std::string s = lexical_cast<std::string>(tempTotal);
答案 2 :(得分:1)
尝试以下方法:
string toString(int tempTotal)
{
ostringstream ss;
ss << tempTotal;
return ss.str();
}
string store = toString(tempTotal);
答案 3 :(得分:1)
如果你想输出整数,你甚至不需要转换它;只需将其插入标准输出:
int i = 100;
cout << i;
如果你想要字符串表示,那你就做得很好。像你一样将它插入到字符串流中,并要求它为str()
。
如果这不起作用,我建议您尽量减少代码量,并尝试使用调试器查明实际问题:)
答案 4 :(得分:1)
简短回答:将int转换为字符串的方法有效。还有其他问题吗?