如何在 C + + 中将长字符串转换为字符串?

如何在 C + + 中将 long转换为 string

166691 次浏览

看看 std::stringstream

你可以用字符串流。

#include <sstream>


// ...
std::string number;
std::stringstream strstream;
strstream << 1L;
strstream >> number;

通常在编译器的标准库中有一些专有的 C 函数也可以做到这一点。不过我更喜欢“便携式”的变体。

使用 C 语言的方法是使用 sprintf,但这并不是很安全。在一些库中,有像 sprintf _ s 这样的新版本,可以防止缓冲区溢出。

   #include <sstream>




....


std::stringstream ss;
ss << a_long_int;  // or any other type
std::string result=ss.str();   // use .str() to get a string back

我通常使用 sprintf 来完成。因此,在很长一段时间内,假设您处于32位架构上,您可以执行以下操作:

char buf[5] = {0}; // one extra byte for null
sprintf(buf, "%l", var_for_long);
int main()
{
long mylong = 123456789;
string mystring;
stringstream mystream;
mystream << mylong;
mystring = mystream.str();
cout << mystring << "\n";
return 0;
}

有几种方法。请阅读 庄园农场的弦乐版式以进行深入的比较。

如果你是复制粘贴的爱好者,这就是:

#include <sstream>


template <class T>
inline std::string to_string (const T& t)
{
std::stringstream ss;
ss << t;
return ss.str();
}

我不知道这是什么样的家庭作业,但很可能老师不想要一个答案,你只是调用一个“神奇的”现有函数(即使这是推荐的方法) ,但他想看看你是否可以实现自己的这一点。

过去,我的老师经常说这样的话: “我想看看你是否能自己编程,而不是你是否能在系统中找到它。”好吧,他错得多离谱;)。.

无论如何,如果你的老师是相同的,这里是 来硬的做它. 。

std::string LongToString(long value)
{
std::string output;
std::string sign;


if(value < 0)
{
sign + "-";
value = -value;
}


while(output.empty() || (value > 0))
{
output.push_front(value % 10 + '0')
value /= 10;
}


return sign + output;
}

您可能会争辩说,使用 std::string并不是一条“艰难的道路”,但是我猜测在实际算法中什么才是重要的。

boost::lexical_cast<std::string>(my_long) 更多 http://www.boost.org/doc/libs/1_39_0/libs/conversion/lexical_cast.htm 请点击这里

为了帮助您进一步思考这个问题,到目前为止还没有人讨论过的一个问题是,当将格式强制转换为字符串时,应该采用什么样的格式。

只需查看一下电子表格程序(如 Calc/Excel)。你想让它四舍五入到最接近的百万,如果它是负的,用括号表示,总是显示符号..。这个数字真的是其他东西的表示吗? 你应该用 Oractal 还是 Hex 来表示?

到目前为止,答案已经给出了一些默认输出,但可能不是正确的输出。

在 C + + 11中,实际上在 < string > 中有 To _ stringTo _ wstring函数。

string to_string(int val);
string to_string(long val);
string to_string(long long val);
string to_string(unsigned val);
string to_string(unsigned long val);
string to_string(unsigned long long val);
string to_string(float val);
string to_string(double val);
string to_string (long double val);

可以在 C + + 11中使用 < strong > std: : to _ string

long val = 12345;
std::string my_val = std::to_string(val);