2014-11-02 3 views
3

문자열에서 다른 유형의 데이터를 추출하려고합니다.문자열을 사용하여 문자열을 __uint128_t로 변환하십시오.

Unix/UnixSocket.cpp:158:10: error: ambiguous overload for ‘operator>>’ in ‘hdr >> id_client’ Unix/UnixSocket.cpp:158:10: note: candidates are: In file included from /usr/include/c++/4.7/sstream:39:0, 
       from Unix/UnixSocket.cpp:11: /usr/include/c++/4.7/istream:118:7: note: std::basic_istream<_CharT, 
_Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT, _Traits>::__istream_type& (*)(std::basic_istream<_CharT, _Traits>::__istream_type&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, 
_Traits>::__istream_type = std::basic_istream<char>] <near match> /usr/include/c++/4.7/istream:118:7: note: no known conversion for argument 1 from ‘__int128 unsigned’ to ‘std::basic_istream<char>::__istream_type& (*)(std::basic_istream<char>::__istream_type&) {aka std::basic_istream<char>& (*)(std::basic_istream<char>&)}’ /usr/include/c++/4.7/istream:122:7: note: std::basic_istream<_CharT, 
_Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT, _Traits>::__ios_type& (*)(std::basic_istream<_CharT, _Traits>::__ios_type&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, 
_Traits>::__istream_type = std::basic_istream<char>; std::basic_istream<_CharT, _Traits>::__ios_type = std::basic_ios<char>] <near match> /usr/include/c++/4.7/istream:122:7: 

제대로이 __uint128_t 변수에 내 id_client를 저장할 수있는 방법이 있나요 : 나는 hdr >> id_client 그렇게 할 때

void     readHeader(char buf[BUFFSIZE]) 
{ 
    std::istringstream hdr(buf); 
    __uint128_t   id_client; 

    hdr >> id_client; // doesn't compile 
} 

는이 오류를 받고 있어요?

+2

유형이 표준 유형이 아니기 때문에 표준 라이브러리는 유형을 지원하지 않습니다. 수동으로 수를 구문 분석하고 변환해야합니다. –

+0

컴파일러가 지원하는 경우'uint128_t '를 사용할 수 있습니다. – justanothercoder

+0

@JoachimPileborg 저는 그들이 컴파일러에 유형을 추가 한 clang/gcc 팀의 표준 라이브러리를 보완하고 있다고 확신합니다. 그것이 발견 될 수 있다면 그것은 흥미로운 질문입니다. –

답변

1

https://gmplib.org/ 도움이 될 수 있습니다. gmpxx 객체 추상화의 mpz_class 클래스는 I/O 연산자를 지원하며 mpz_export (...) 함수를 사용하면 결과를 바이트 배열로 변환 할 수 있습니다. 16 바이트를 초과하면 예외가 발생하거나 불만을 제기 할 수 있습니다. 매우 빠르지 만 빨리 구현할 것으로 생각됩니다.

관련 문제