Original article: String to Int in C++ – How to Convert a String to an Integer Example
C++로 코드를 작성할 때, 어떤 데이터 타입을 다른 타입으로 바꿔야 할 때가 있을 것입니다.
이 글에서는 가장 잘 알려진 두 가지 방법을 통해 C++에서 string을 integer로 바꾸는 방법을 배울 수 있습니다.
그럼 시작해 봅시다!
C++ 데이터 타입
C++ 프로그래밍 언어는 아래와 같은 내장 데이터 타입을 갖습니다.
- 정수형을 위한
int
(예, 10, 150) - 부동 소수점을 위한
double
(예, 5.0이나 4.5) - 단일 문자를 위한
char
(예, 'D'나 '!') - 문자열을 위한
string
(예, 'Hello') - boolean 값을 위한
bool
(예, true나 false)
C++는 강타입 프로그래밍 언어로, 변수를 하나 생성할 때 이 변수에 어떤 값이 저장될지 그 타입을 명확하게 명시해야 한다는 뜻입니다.
C++에서 int
를 선언하고 초기화하는 방법
C++에서 int
타입 변수를 선언하려면 변수의 데이터 타입을 먼저 작성해야 합니다. 이 경우에는 int
가 되겠지요. 변수가 어떤 종류의 값을 저장할 수 있는지 컴파일러에 알려 필요한 행동을 취하도록 합니다.
다음으로, 변수에 이름을 지어줍니다.
마지막으로, 문장 끝에 세미콜론을 잊지 마세요!
#include <iostream>
int main() {
int age;
}
아래처럼 생성한 변수에 값을 줄 수도 있습니다.
#include <iostream>
int main() {
int age;
age = 28;
}
이를 각각 별개의 작업으로 진행하는 대신, 변수를 초기화하고 결과를 출력해보는 과정을 합칠 수도 있습니다.
// 이 헤더 파일을 통해 cout 같은 정보를 출력하기 위한 함수나 cin 같은 정보를 입력받는 함수를 사용할 수 있습니다.
#include <iostream>
// 이름공간 문장(statement)을 사용하면 std:: 접두사를 쓸 필요 없습니다.
using namespace std;
int main() { // 프로그램의 메인 함수의 시작입니다.
int age = 28;
// 변수를 초기화합니다.
// 초기화란 타입과 이름, 값을 한 번에 제공하는 과정입니다.
// << 을 사용해 콘솔에 연결해 출력합니다. "My age is 28"
cout << "My age is: " << age << endl;
} // 메인 함수의 끝입니다.
C++에서 string
을 선언하고 초기화하는 방법
String은 개별 문자 집합입니다.
C++에서 String 선언은 위에서 본 바와 같이 int
의 선언과 초기화와 매우 유사합니다.
C++ 표준 라이브러리는 string
클래스를 제공합니다. string 데이터 타입을 사용하려면 파일의 가장 상단, #include <ionstream>
다음 <string>
헤더 라이브러리를 추가합니다.
헤더 파일을 포함해준 뒤, 이미 확인한 바처럼 using namespace std;
를 추가할 수 있습니다.
무엇보다도, 이 한 줄을 추가해준 다음엔 string 변수를 생성할 때마다 std::string
를 사용하지 않아도 되어서, string
만으로 충분합니다.
#include <ionstream>
#include <string>
int main() {
// string 변수를 선언합니다.
string greeting;
greeting = "Hello";
// `=`는 할당 연산자로, 값을 변수에 할당합니다.
}
또는 string 변수를 초기화하고 이를 콘솔에 출력해볼 수 있습니다.
#include <ionstream>
#include <string>
using namespace std;
int main() {
// string 변수를 초기화합니다.
string greetig = "Hello";
// "Hello"를 콘솔에 출력합니다.
cout << greeting << endl;
}
string을 ineger로 변환하는 방법
이전에 언급한 것처럼, C++는 강타입 언어입니다.
데이터 타입과 맞지 않은 값을 제공하고자 할 때 에러를 만납니다.
또한, string을 integer로 변환하는 것은 double
을 int
로 변환시키는 타입 캐스팅(type casting)을 쓰는 것처럼 간단하지는 않습니다.
아래는 사용할 수 없는 코드 예시입니다.
#include <iostream>
#include <string>
using namespace std;
int main() {
string str = "7";
int num;
num = (int) str;
}
컴파일링 후 나오는 에러는 아래와 같습니다.
hellp.cpp:9:10: error: no matching conversion for C-style cast from 'std::__1::string' (aka
'basic_string<char, char_traits<char>, allocator<char> >') to 'int'
num = (int) str;
^~~~~~~~~
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/string:875:5: note: candidate function
operator __self_view() const _NOEXCEPT { return __self_view(data(), size()); }
^
1 error generated.
string을 int로 바꾸는 여러 가지 방법 중 아래에서는 두 가지를 소개하려고 합니다.
stoi()
함수를 사용해 string을 int로 변환하는 방법.
string 객체를 numeral int로 변환하는 가장 효과적인 방법은 stoi()
함수를 사용하는 것입니다.
이 방법은 C++11에 도입된 새로운 버전의 C++에서 흔하게 사용됩니다.
string 값을 입력으로 받고, 이의 integer를 출력으로 반환합니다.
#include <iostream>
#include <string>
using namespace std;
int main() {
// str이라고 변수명을 지은 string 값
string str = "7";
// 콘솔에 출력
count << "I am a string" << str << endl;
// string str 변수를 int 값을 갖도록 변환
// num으로 이름 지은 새로운 변수가 int 값을 갖도록 새로운 값을 놓습니다.
int num = stoi(str);
// 콘솔에 출력
cout << "I am an int" << num << endl;
}
출력
I am a string 7
I am an int 7
stringstream
클래스를 사용해 string을 int로 변환하는 방법
stringstream
클래스는 이전 버전 C++에서 주로 사용되었습니다. string에 입력과 출력을 수행합니다.
이를 사용하려면, #include <sstream>
라는 코드를 추가해 sstream
라이브러리를 프로그램 상단에 포함시킵니다.
이후 stringstream
을 추가한 뒤, stringstream
객체를 생성합니다. 이는 int로 변환하고자 하는 string 값을 가지며 int로 변환하는 동안에 사용됩니다.
string 값에서 string을 추출하려면 <<
연산자를 사용해야 합니다.
마지막으로 int 변수에 새로 변환된 int 값을 입력하기 위해 >>
연산자를 사용합니다.
#include <iostream>
#include <string>
#include <sstream> // 이제 프로그램 내에서 stringstream을 사용할 수 있습니다.
using namespace std;
int main() {
// string을 입력 및 출력하기 위해 stringstream 객체를 생성합니다.
stringstream ss;
// str이라는 변수는 string 데이터 타입을 갖습니다.
string str = "7";
// num이라는 변수는 int 데이터 타입을 갖습니다.
int num;
// str 변수에서 string 값을 추출합니다. (스트림에 string 값을 입력합니다.)
ss << str;
// 변환된 값을 int 변수에 넣습니다.
ss >> num;
// 콘솔에 출력합니다.
cout << num << endl; // intiger 값 7을 출력합니다.
}
마무리
아주 쉽죠! C++에서 가장 쉽게 string을 integer로 변환하는 두 가지 방법을 확인했습니다.
C++ 프로그래밍 언어를 더 알고 싶다면, freeCodeCamp 유튜브 채널의 이 4시간짜리 코스를 확인해 보세요.
읽어주셔서 감사합니다. 즐겁게 배우시길 바랍니다 😊