我在下面的函数中发现了一个错误。当 temp = 10 时。它会将 temp 转换为字符串 '01'。而不是字符串'10'。我不知道为什么?将Num转换为Str有更好的方法吗?谢谢。
这样完成了 Num2Str(),
static bool Num2Str(string& s, const T& value)
{
int temp = static_cast<int>(value); // When temp = 10.
s.push_back(char('0' + temp % 10));
temp /= 10;
while(temp != 0)
{
s.push_back(char('0' + temp % 10));
temp /= 10;
}
if(s.size() == 0)
{
return false;
}
if(s.find_first_not_of("0123456789") != string::npos)
{
return false;
}
return true;
}
使用 std::ostringstream
将数字转换为字符串。
不要在 C++ 中使用自由静态函数;请改用未命名的命名空间。
#include<sstream>
#include<string>
namespace {
void f()
{
int value = 42;
std::ostringstream ss;
if( ss << value ) {
std::string s = ss.str();
} else {
// failure
}
}
}
我是一名优秀的程序员,十分优秀!