0

long を string に変換する必要がありますが、使用できませんsprintf()

これが私のコードです

char *ultostr(unsigned long value, char *ptr, int base)
{
    unsigned long t = 0; 
    unsigned long res = 0;
    unsigned long tmp;
    int count = 0;

    tmp = value;

    if (ptr == NULL)
    {
        return NULL;
    }

    if (tmp == 0)
    {
        count++;
    }

    while(tmp > 0)
    {
        tmp = tmp/base;
        count++;
    }

    ptr += count;
    *ptr = '\0';

    do
    {
        t = value / base;
        res = value - (base*t);

        if (res < 10)
        {
            * -- ptr = '0' + res;
        }
        else if ((res >= 10) && (res < 16))
        {
            * --ptr = 'A' - 10 + res;
        }

        value = t;
    } while (value != 0);

   return(ptr);
}
4

4 に答える 4

2

stringstream を使用できると思います。

#include <sstream>
...
std::stringstream x;
x << 1123;
cout << x.str().c_str();

(x.str().c_str() はそれを char* にします) それは私にとってはうまくいきました。

于 2013-03-30T12:55:27.793 に答える
1

使用できますstringstream

例:

#include <iostream>
#include <sstream>
#include <string>

using namespace std;

int main()
{
    ostringstream ss;
    long i = 10;
    ss << i;
    string str = ss.str();
    cout << str << endl;
}
于 2013-03-30T12:52:41.440 に答える
0

次のようなストリーム オブジェクトを利用する必要がありますstd::stringstream

#include <string>
#include <sstream>

int main()
{
    long int i = 10000;

    std::stringstream ss;
    std::string str;

    ss << i;

    str = ss.str();

    std::cout << str; // 10000
}

ライブデモ

于 2013-03-30T12:52:21.207 に答える