development

int를 std :: string으로 변환

big-blog 2020. 7. 7. 07:12
반응형

int를 std :: string으로 변환


int를 문자열로 변환하는 가장 짧은 방법, 바람직하게는 인라인 가능한 방법은 무엇입니까? stl 및 boost를 사용한 답변을 환영합니다.


C ++ 11에서 std :: to_string사용할 수 있습니다

int i = 3;
std::string str = std::to_string(i);

#include <sstream>
#include <string>
const int i = 3;
std::ostringstream s;
s << i;
const std::string i_as_string(s.str());

boost::lexical_cast<std::string>(yourint) ...에서 boost/lexical_cast.hpp

std :: ostream을 지원하는 모든 작업에 적합하지만, 예를 들어 itoa

심지어 stringstream 또는 scanf보다 빠릅니다.


잘 알려진 방법은 스트림 연산자를 사용하는 것입니다.

#include <sstream>

std::ostringstream s;
int i;

s << i;

std::string converted(s.str());

물론 템플릿 기능을 사용하여 모든 유형에 대해 일반화 할 수 있습니다 ^^

#include <sstream>

template<typename T>
std::string toString(const T& value)
{
    std::ostringstream oss;
    oss << value;
    return oss.str();
}

비표준 기능이지만 가장 일반적인 컴파일러에서 구현됩니다.

int input = MY_VALUE;
char buffer[100] = {0};
int number_base = 10;
std::string output = itoa(input, buffer, number_base);

최신 정보

C ++ 11은 몇 가지 std::to_string오버로드를 도입했습니다 (기본은 10 진법입니다).


std::to_stringC ++ 11에서 사용할 수없는 경우 cppreference.com에 정의 된대로 작성할 수 있습니다.

std::string to_string( int value )부호있는 십진 정수를 std::sprintf(buf, "%d", value)충분히 큰 buf를 생성 할 내용과 동일한 내용의 문자열로 변환합니다 .

이행

#include <cstdio>
#include <string>
#include <cassert>

std::string to_string( int x ) {
  int length = snprintf( NULL, 0, "%d", x );
  assert( length >= 0 );
  char* buf = new char[length + 1];
  snprintf( buf, length + 1, "%d", x );
  std::string str( buf );
  delete[] buf;
  return str;
}

더 많은 것을 할 수 있습니다. 그냥 사용 "%g"변환 플로트 또는 문자열로 사용 두 배 "%x"에 너무 진수 표현으로 변환 INT에, 그리고.


다음 매크로는 일회용 ostringstream또는 처럼 컴팩트하지 않습니다 boost::lexical_cast.

그러나 코드에서 반복적으로 문자열로 변환해야하는 경우이 매크로는 매번 문자열 스트림을 직접 처리하거나 명시 적 캐스팅보다 사용하기가 더 우아합니다.

또한 지원되는 모든 것을 조합 하여 변환하기 때문에 매우 다목적 입니다.operator<<()

정의:

#include <sstream>

#define SSTR( x ) dynamic_cast< std::ostringstream & >( \
            ( std::ostringstream() << std::dec << x ) ).str()

설명:

The std::dec is a side-effect-free way to make the anonymous ostringstream into a generic ostream so operator<<() function lookup works correctly for all types. (You get into trouble otherwise if the first argument is a pointer type.)

The dynamic_cast returns the type back to ostringstream so you can call str() on it.

Use:

#include <string>

int main()
{
    int i = 42;
    std::string s1 = SSTR( i );

    int x = 23;
    std::string s2 = SSTR( "i: " << i << ", x: " << x );
    return 0;
}

You might include the implementation of itoa in your project.
Here's itoa modified to work with std::string: http://www.strudel.org.uk/itoa/


You can use this function to convert int to std::string after including <sstream>:

#include <sstream>

string IntToString (int a)
{
    stringstream temp;
    temp<<a;
    return temp.str();
}

Suppose I have integer = 0123456789101112. Now, this integer can be converted into a string by the stringstream class.

Here is the code in C++:

   #include <bits/stdc++.h>
   using namespace std;
   int main()
   {
      int n,i;
      string s;
      stringstream st;
      for(i=0;i<=12;i++)
      {
        st<<i;
      }
      s=st.str();
      cout<<s<<endl;
      return 0;

    }

#include <string>
#include <stdlib.h>

Here, is another easy way to convert int to string

int n = random(65,90);
std::string str1=(__String::createWithFormat("%c",n)->getCString());

you may visit this link for more methods https://www.geeksforgeeks.org/what-is-the-best-way-in-c-to-convert-a-number-to-a-string/

참고URL : https://stackoverflow.com/questions/4668760/converting-an-int-to-stdstring

반응형