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로 변환하는 것은 doubleint로 변환시키는 타입 캐스팅(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시간짜리 코스를 확인해 보세요.

읽어주셔서 감사합니다. 즐겁게 배우시길 바랍니다 😊