std::to_string 不起作用是一个已知问题。甚至 std::itoa 也不适合我。如何将 int 转换为字符串?我不太关心性能,我所需要的只是工作而不会太慢。
编辑:我安装了最新的 mingw 32,std::to_string 仍然不起作用。我从这里安装它:http: //sourceforge.net/projects/mingwbuilds/files/host-windows/releases/4.8.1/32-bit/threads-win32/sjlj/
std::to_string 不起作用是一个已知问题。甚至 std::itoa 也不适合我。如何将 int 转换为字符串?我不太关心性能,我所需要的只是工作而不会太慢。
编辑:我安装了最新的 mingw 32,std::to_string 仍然不起作用。我从这里安装它:http: //sourceforge.net/projects/mingwbuilds/files/host-windows/releases/4.8.1/32-bit/threads-win32/sjlj/
您是否考虑过使用字符串流?
#include <sstream>
std::string itos(int i){
std::stringstream ss;
ss<<i;
return ss.str();
}
我花了几个小时才解决这个问题,最后我为此编写了自己的函数。它可能不是最优的并且可能存在缺陷,因为我是 C++ 新手(这实际上是我用 C++ 编写的第一个有用的函数)。但是,它完美地通过了我编写的所有测试,除非 int-string 转换是瓶颈的重要组成部分,否则性能应该不是问题。
string itos(int i)
{
if (i == 0) { return "0"; }
if (i < 0) { return "-" + itos(-i); }
// Number of characters needed
int size = int(log10(i)) + 1;
char* buffer = (char*)malloc((size + 1) * sizeof(char));
buffer[size] = NULL;
for (int j = 0; j < size; j++)
buffer[j] = (char) ( (int(i / pow(10, (size - j - 1))) % 10) + '0');
string l(buffer);
free(buffer);
return l;
}