코린이의 개발 일지

[c++ 문법] c++ 입출력, 문자열 입출력 (string class 사용하기) 본문

프로그래밍 언어 문법/c++ 문법 정리

[c++ 문법] c++ 입출력, 문자열 입출력 (string class 사용하기)

폴라민 2021. 9. 19. 13:06
반응형

1. c++ 기본 입출력

이번에는 c++ 입출력에 대해 다뤄보겠습니다. 

우선 코드를 볼까요?

 

#include <iostream>

using namespace std;

int main()
{

    int age; //정수로 age를 선언 해두었기 때문에

    cout << "여러분의 나이를 입력해 주세요 : ";

    cin >> age; 
// 숫자를 입력할 경우 자동으로 정수로 인식. c언어와 달리 입출력 데이터를 자동으로 변환

    cout << "여러분의 나이는 " << age << "살 입니다." << endl;
    // age에 숫자가 아닌 문자를 넣은 경우 age가 숫자가 아니라는 의미인 0이 전달
    return 0;

}

우선 age라는 정수를 선언합니다.

그리고 이제 질문할 문장을 cout으로 출력합니다.

 

여기서 중요한점!!

cout과 cin이 자세히 보시면 괄호 방향이 다릅니다.

cout <<

cin >>

주의!!!!

 

아무튼 이제 질문을 던졌으니 입력을 받아야겠죠?

입력을 받을 때는 cin 명령어를 사용합니다.

c언어는 입력 받으면 무조건 문자열로 인식했었잖아요? 그래서 data type을 바꿔 주어야하는 번거로움이 있었는데

이제 그럴 필요가 없습니다.

cin은 우리가 미리 age는 정수라고 선언을 해두었으니 알아서 정수형으로 변환해 줍니다.

 

참 편리하죠?

 

출력할 때도 문장들 사이에 <<age<<를 입력하면 알아서 정수로 인식해서 정수를 출력해줍니다.

c언어 에서 처럼 %d 한다음에 입력할 필요가 없죠.

 

아 여기서 <<endl은 줄바꿈 명령어 입니다. \n 기억나시죠? 같은 기능입니다.

 

2. 문자열 입출력

자 정수 데이터 입출력은 해봤는데, 그렇다면 문자열 입출력은 어떨까요?

 

c언어 해보신분들은 지례 겁을 먹으실 수도 있습니다. 하지만 그럴 필요 전혀 없어요. 아주 간단합니다.

 

우선 c언어 문자열 처리 과정을 볼까요?

 

#include <stdio.h>
#include <string.h>

int main()
{
	char *str;
    	printf("문장을 입력하세요: ");
	scanf("%s", str);
	printf("str에 저장된 문자: %s\n", str);

	char* hello = "hello";
	
	// 문자열 처리
	strcpy(str, hello);
	printf("str에 저장된 문자: %s", str);

	return 0;
}

 

사실 크게 어려운건 없는데, 우선 포인터를 써야한다는 점, 그리고 문자열 처리하는 strcpy, strcat등등의 함수를 써야한다는 점이 굉장히 귀찮죠.

 

참고로 여기서 strcpy는 뒤에 hello에 저장된 "hello"라는 문자를 앞에 str에 복사해 줍니다.

 

같은 프로그래밍을 c++에서 해봅시다.

 

#include <iostream>
#include <string> // string이라는 클래스를 사용하여 문자열 처리
using namespace std;


int main()

{
    string str, hello; // string 객체 선언
    
    cout << "문장을 입력해 주세요: ";
    cin >> str; // string 객체를 이용한 문자열을 입력 받을 때 cin 객체를 이용한다.
    cout << str << endl;

    hello = "hello";
    str = hello; // str문자열에 hello 문자열 복사
    cout << str;
    return 0;
}

 

c++에서는 string 클래스를 이용해 좀더 간편하게 문자열 처리를 할 수 있다.

별로 간편해 보이지 않을 수 있지만 포인터를 사용하지 않는 다는 점에서 좀더 복잡한 문자열 처리를 할 때 훨씬 더 강력해진다.

 

또한 별다른 함수를 사용할 필요 없이 여러가지 문자열 처리가 가능하다.

 

string str1 = "Hello my name is ";

string str2 = "polarmin";

string str3;

 

str3 = str1 + str2; // 문자열 결합 연산

cout << str3 << endl;

 

str1 += str2;       // 문자열 추가 연산

cout << str1;

 

문자열의 길이는 .length() 함수로 편하게 알 수 있고 또한 배열 처럼 인덱스로 처리도 가능합니다.

 

#include <iostream>
#include <string>
using namespace std;


int main()

{
    string str, hello;

    cout << "문장을 입력해 주세요: ";
    cin >> str; // string 객체를 이용한 문자열을 입력 받을 때 cin 객체를 이용한다.
    cout << str << endl;

    hello = "hello";
    str = hello;
    cout << str << endl;

    cout << "str 문자열의 길이는 " << str.length() << "입니다." << endl; 
    cout << "str 문자열의 첫번째 문자는 " << str[0] << "입니다." << endl;
    return 0;

}

이런식으로 사용이 가능합니다. 문자열 처리 함수들은 꼭 형태가 파이썬 문자열 처리 함수들이랑 비슷하게 생겼죠?

 

이외에도

 

  1. length() 메소드와 size() 메소드
  2. append() 메소드
  3. find() 메소드
  4. compare() 메소드
  5. replace() 메소드
  6. capacity() 메소드와 max_size() 메소드

여러가지의 문자열 처리 함수 들이 있는데, 더 알고 싶으신 분들은 

 

http://tcpschool.com/cpp/cpp_string_stringMethod

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

이곳에서 자세히 공부 하실 수 있습니다. 자세히 나와있더라구요.

다음 포스팅에서는 아마 클래스를 다루지 않을까 싶습니다.

반응형
Comments