Преобразование uint64 в строку в C ++ - PullRequest
6 голосов
/ 24 июня 2010

Какой самый простой способ преобразовать значение uint64 в стандартную строку C ++? Я проверил методы assign из строки и не смог найти никого, кто бы принимал uint64 (8 байт) в качестве аргумента.

Как я могу это сделать?

Спасибо

Ответы [ 7 ]

12 голосов
/ 25 июня 2010

Стандартный способ:

std::string uint64_to_string( uint64 value ) {
    std::ostringstream os;
    os << value;
    return os.str();
}

Если вам нужен оптимизированный метод, вы можете использовать этот:

void uint64_to_string( uint64 value, std::string& result ) {
    result.clear();
    result.reserve( 20 ); // max. 20 digits possible
    uint64 q = value;
    do {
        result += "0123456789"[ q % 10 ];
        q /= 10;
    } while ( q );
    std::reverse( result.begin(), result.end() );
}
11 голосов
/ 24 июня 2010
#include <sstream>

std::ostringstream oss;
uint64 i;
oss << i;
std:string intAsString(oss.str());
9 голосов
/ 24 июня 2010

более информативно, чем потоки, я думаю, это lexical_cast

uint64 somevalue;
string result = boost::lexical_cast<string>(somevalue);
4 голосов
/ 24 июня 2010

C ++: Использовать поток строк

C: sprintf (буфер, "% I64ld", myint64);

4 голосов
/ 24 июня 2010

Я думаю, что вы хотите вывести его в поток строк.Начните здесь:

http://www.cppreference.com/wiki/io/sstream/start

2 голосов
/ 07 ноября 2017

C ++ 11 стандартизировал функцию to_string, упомянутую Фрунси как std::to_string:

#include <string>

int main()
{
  uint64_t value = 128;
  std::string asString = std::to_string(value);
  return 0;
}
0 голосов
/ 25 июня 2010
std::string converted(reinterpret_cast<char*>(&my_int64),
                      reinterpret_cast<char*>((&my_int64)+1));
...