0

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/

4

2 回答 2

5

您是否考虑过使用字符串流?

#include <sstream>

std::string itos(int i){
    std::stringstream ss;
    ss<<i;
    return ss.str();
}
于 2013-07-25T16:04:38.867 回答
0

我花了几个小时才解决这个问题,最后我为此编写了自己的函数。它可能不是最优的并且可能存在缺陷,因为我是 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;
}
于 2013-07-25T15:57:27.813 回答