c string conversion functions
이 튜토리얼에서는 문자열을 int & double로 변환하고 int를 문자열로 변환하는 데 사용할 수있는 C ++ 문자열 변환 함수를 다룹니다.
C ++ 애플리케이션을 개발할 때 문자열을 정수 및 이중과 같은 숫자로 변환하는 것이 일반적입니다.
이 항목에서는 문자열을 int 및 double로 효과적으로 변환하고 숫자 값을 문자열로 변환하는 데 사용할 수있는 함수에 대해 설명합니다.
=> 여기에서 인기있는 C ++ 교육 시리즈를 읽어보십시오.
학습 내용 :
C ++ 문자열 변환 함수
C ++를 사용하여 응용 프로그램을 프로그래밍 할 때 데이터를 한 유형에서 다른 유형으로 변환해야합니다. 데이터 변환은 기존 데이터를 새로운 유형으로 변환 할 때 데이터가 전혀 손실되지 않도록해야합니다. 특히 문자열 데이터를 숫자로 또는 그 반대로 변환 할 때 그렇습니다.
3 년 경력의 pl SQL 인터뷰 질문
이 튜토리얼에서는 std :: string 객체를 integer 및 double을 포함한 숫자 데이터 유형으로 변환하는 다양한 함수에 대해 설명합니다.
C ++에서 문자열을 숫자 유형으로 변환
일반적으로 C ++에서 문자열을 숫자로 변환하는 두 가지 일반적인 방법이 있습니다.
- 모든 숫자 데이터 유형에 대해 복제하는 stoi 및 atoi 함수 사용.
- stringstream 클래스 사용.
각 방법에 대해 자세히 논의하겠습니다.
stoi 및 atoi 함수 사용
std :: string 클래스는 string을 integer, long, double, float 등으로 변환하는 다양한 함수를 지원합니다. std :: string에서 지원하는 변환 함수는 다음과 같이 표 형식화됩니다.
함수 | 기술 |
---|---|
서 있는 스톨 훔치다 | 문자열을 정수로 변환합니다 (long 및 long long 유형 포함). |
아토이 환초 환초 | 바이트 문자열을 정수로 변환합니다 (long 및 long long 유형 포함). |
서 있었다 먼지 말하다 | 바이트 문자열을 부동 소수점 값 (float, double 및 long double 유형 포함)으로 변환합니다. |
stoul 스톨 | 바이트 문자열을 부호없는 정수 (부호없는 long 및 부호없는 long long 유형 포함)로 변환합니다. |
노트 : 바이트 문자열 (atoi)을 변환하는 함수를 제외하고 다른 모든 변환 함수는 C ++ 11부터 존재합니다. 이제 문자열을 int로 변환하고 문자열을 double로 변환하는 변환 함수에 대해 설명합니다.
stoi () 및 atoi ()를 사용하여 int 문자열
서 있는()
기능 프로토 타입 : stoi (const std :: string & str, std :: size_t * pos = 0, int base = 10);
매개 변수 :
str => 변환 할 문자열
pos => 처리 된 문자 수를 저장할 정수 주소; 기본값 = 0
base => 숫자 base; 기본값 = 0
반환 값 : 지정된 문자열에 해당하는 정수입니다.
예외 : std :: invalid_argument => 변환을 수행 할 수없는 경우.
Std :: out_of_range => 변환 된 값이 결과 유형 범위를 벗어난 경우.
기술: stoi () 함수는 문자열을 인수로 사용하고 정수 값을 반환합니다. 변환 된 값이 범위를 벗어 났거나 변환을 수행 할 수없는 경우 예외가 발생합니다.
이 함수를 더 잘 이해하기 위해 프로그래밍 예제를 살펴 보겠습니다.
#include #include using namespace std; int main() { string mystr1 = '53'; string mystr2 = '3.142'; string mystr3 = '31477 with char'; int strint1 = stoi(mystr1); int strint2 = stoi(mystr2); int strint3 = stoi(mystr3); cout << 'stoi('' << mystr1 << '') is ' << strint1 << '
'; cout << 'stoi('' << mystr2 << '') is ' << strint2 << '
'; cout << 'stoi('' << mystr3 << '') is ' << strint3 << '
'; }
산출:
스탠드 (“53”)는 53입니다.
스탠드 (“3,142”)는 3입니다.
stoi (“31477 with char”)는 31477입니다.
위의 프로그램에서 우리는 세 가지 다른 문자열로 stoi 함수를 사용했습니다. 문자열 데이터를 정수 값으로 변환하는 동안 함수는 공백이나 다른 문자를 버립니다.
따라서 mystr2 (3.142)의 경우 함수는 소수점 뒤의 모든 것을 버렸습니다. 마찬가지로 mystr3 (“31477 with char”)의 경우 숫자 만 고려되었습니다. 문자열의 다른 내용은 삭제되었습니다.
아토이 ()
기능 프로토 타입 : int atoi (const char * str);
매개 변수 : str => 널로 끝나는 바이트 문자열에 대한 포인터.
반환 값 :
Success => str 인수에 해당하는 정수 값.
실패 => 변환 된 값이 범위를 벗어나면 정의되지 않습니다.
0 => 변환을 수행 할 수없는 경우.
기술: 이 함수는 바이트 문자열을 정수 값으로 변환합니다. atoi () 함수는 공백이 아닌 문자를 만날 때까지 공백을 버리고 문자를 하나씩 가져와 유효한 정수 표현을 형성하고이를 정수로 변환합니다.
atoi 함수의 예
#include #include using namespace std; int main() { const char *mystr1 = '24'; const char *mystr2 = '3.142'; const char *mystr3 = '23446 with char'; const char *mystr4 = 'words with 3'; int mynum1 = atoi(mystr1); int mynum2 = atoi(mystr2); int mynum3 = atoi(mystr3); int mynum4 = atoi(mystr4); cout << 'atoi('' << mystr1 << '') is ' << mynum1 << '
'; cout << 'atoi('' << mystr2 << '') is ' << mynum2 << '
'; cout << 'atoi('' << mystr3 << '') is ' << mynum3 << '
'; cout << 'atoi('' << mystr4 << '') is ' << mynum4 << '
'; }
산출:
atoi (“24”)는 24입니다.
atoi ( '3.142')는 3입니다.
atoi (“23446 with char”)는 23446입니다.
atoi ( 'words with 3')는 0입니다.
위의 프로그램에서 볼 수 있듯이 atoi 함수는 바이트 문자열을 인수로 사용하여 정수 값으로 변환합니다. 공백 또는 기타 문자는 삭제됩니다. 변환 된 값이 범위를 벗어나면 0이 반환됩니다.
stod ()를 사용하여 두 배로 문자열
기능 프로토 타입 : stod (const std :: string & str, std :: size_t * pos = 0);
매개 변수 :
str => 변환 할 문자열
pos => 처리 된 문자 수를 저장할 정수 주소; 기본값 = 0
반환 값 : 지정된 문자열에 해당하는 Double 값입니다.
예외 :
std :: invalid_argument => 변환을 수행 할 수없는 경우.
std :: out_of_range => 변환 된 값이 결과 유형 범위를 벗어난 경우.
기술: 이 함수는 문자열을 부동 소수점 값으로 변환합니다. stod () 함수는 공백이 아닌 문자를 만날 때까지 공백을 버리고 문자를 하나씩 가져와 유효한 부동 소수점 숫자 표현을 형성하고이를 부동 소수점으로 변환합니다.
이 기능을 보여주는 예를 살펴 보겠습니다.
#include #include using namespace std; int main() { const char *mystr1 = '24'; const char *mystr2 = '3.142'; const char *mystr3 = '23446 with char'; double mynum1 = stod(mystr1); double mynum2 = stod(mystr2); double mynum3 = stod(mystr3); cout << 'stod('' << mystr1 << '') is ' << mynum1 << '
'; cout << 'stod('' << mystr2 << '') is ' << mynum2 << '
'; cout << 'stod('' << mystr3 << '') is ' << mynum3 << '
'; }
산출:
stod ( '24')는 24입니다.
stod ( '3.142')는 3.142입니다.
stod ( '23446 with char')는 23446입니다.
위 프로그램은 'stod'기능의 사용법을 보여줍니다. 출력은 지정된 문자열의 변환 된 double 값을 나타냅니다.
stringstream 클래스 사용
stringstream 클래스를 사용하는 것은 문자열 값을 숫자 값으로 변환하는 가장 쉬운 방법입니다.
이후 튜토리얼에서 stringstream 클래스에 대해 자세히 학습 할 것입니다. 다음은 문자열을 숫자 값으로 변환하는 것을 보여주는 C ++ 프로그램입니다.
#include #include using namespace std; int main() { string str = '2508'; stringstream sstream(str); int num = 0; sstream >> num; double dNum=0.0; string doublestr = '3.142'; stringstream dstream(doublestr); dstream >>dNum; cout << 'Value of num : ' << num< 산출:
최소 스패닝 트리 C ++
숫자 값 : 2508
dNum 값 : 3.142
위의 프로그램에서 우리는 문자열 객체를 선언했음을 알 수 있습니다. 그런 다음 stringstream 객체를 선언하고이 객체에 문자열을 전달하여 문자열이 stringstream 객체로 변환되도록합니다. 그런 다음이 stringstream 객체는 stringstream 객체를 정수로 변환하는‘>>’연산자를 사용하여 정수 값으로 전달됩니다.
마찬가지로 문자열을 double로 변환했습니다. '>>'연산자가 데이터 유형을 지원하는 한 stringstream 객체를 사용하여 문자열을 모든 데이터 유형으로 변환 할 수 있습니다.
C ++에서 int를 문자열로 변환
숫자 값을 문자열 값으로 변환 할 수도 있습니다. 숫자 값을 문자열 값으로 변환하는 두 가지 방법이 있으며 아래에서 이에 대해 설명합니다.
to_string () 함수 사용
기능 프로토 타입 : std :: string to_string (유형 값);
매개 변수 : value => 변환 할 숫자 값
반환 값 : 변환 된 값이 들어있는 문자열 값입니다.
예외: std :: bad_alloc을 던질 수 있습니다.
기술: 이 함수는 to_string () 인수로 전달 된 숫자 값을 문자열 유형으로 변환하고 문자열을 반환합니다.
C ++ 프로그램을 사용한이 함수의 예를 살펴 보겠습니다.
#include #include // used for string and to_string() using namespace std; int main() { int int_val = 20; float flt_val = 30.50; string str_int = to_string(int_val); string str_float = to_string(flt_val); cout << 'The string representation of integer : '; cout << str_int << endl; cout << 'The string representation of float : '; cout << str_float << endl; return 0; }
산출:
정수의 문자열 표현 : 20 float의 문자열 표현 : 30.500000
자바에서 이진 검색 트리 만들기
여기에는 정수형과 부동 형의 두 가지 변수가 있습니다. 그런 다음 정수 및 부동 인수로 to_string 메서드를 두 번 호출하고 두 값을 모두 문자열 값으로 변환합니다. 마지막으로 변환 된 값을 표시합니다.
부동 소수점 값을 문자열로 변환하면 to_string 메서드에서 유효 자릿수가 0이 될 수 있으므로 예기치 않은 결과가 발생할 수 있습니다.
stringstream 클래스 사용
stringstream 클래스를 사용하여 stringstream은 먼저 숫자 값을 객체에 스트림으로 삽입하는 스트림 객체를 선언합니다. 그런 다음 'str ()'함수를 사용하여 내부적으로 숫자 값을 문자열로 변환합니다.
예:
#include #include #include using namespace std; int main() { int num = 26082019; double num_d = 3.142; ostringstream mystr; ostringstream my_dstr; mystr << num; string resultstr = mystr.str(); my_dstr << num_d; string d_str = my_dstr.str(); cout << 'The string formed from integer is : '; cout << resultstr << endl; cout << 'The string formed from double is : '; cout << d_str << endl; return 0; } #include #include #include using namespace std; int main() { int num = 26082019; double num_d = 3.142; ostringstream mystr; ostringstream my_dstr; mystr << num; string resultstr = mystr.str(); my_dstr << num_d; string d_str = my_dstr.str(); cout << 'The string formed from integer is : '; cout << resultstr << endl; cout << 'The string formed from double is : '; cout << d_str << endl; return 0; }
산출:
정수로 구성된 문자열 : 26082019
double로 형성된 문자열은 3.142입니다.
이 목록에서는 정수와 이중 값을 정의했습니다. 그런 다음 숫자 값을 stringstream 객체로 변환하는 ostringstream 객체를 사용합니다. 이것은‘<<’ operator. Next, we use the str() method on a stringstream object to convert it to a string.
결론
이 자습서에서는 문자열을 숫자 유형으로 변환하고 숫자 유형을 다시 문자열로 변환하는 변환 함수에 대해 설명했습니다. stoi (), stod (), atoi (), to_string () 함수의 함수와 예제를 자세히 살펴 보았습니다. 또한 언급 된 변환을 수행하는 데 도움이되는 몇 가지 stringstream 클래스 함수 및 메서드에 대해 설명했습니다.
추천 읽기 = >> Java에서 문자열을 정수로 변환 과 Java에서 Int를 String으로 변환하는 방법
다음 튜토리얼에서는 문자 데이터 유형에 대한 변환 함수를 배웁니다.
=> 여기에서 심층 C ++ 교육 자습서를 확인하십시오.
추천 도서