cpp

C++ 배열과 문자열

임베디드 친구 2024. 12. 18. 20:35
728x90
반응형

C++ 배열과 문자열

안녕하세요, 소프트웨어 공장입니다! 오늘은 C++ 프로그래밍에서 매우 중요한 개념인 배열(Array)문자열(String)에 대해 알아보겠습니다. 이 글에서는 배열과 문자열의 기초부터 다양한 활용법까지 다룰 예정이며, 코드를 통해 이해를 도와드리겠습니다.

배열(Array)

배열은 같은 데이터 타입의 여러 값을 하나의 변수로 관리할 수 있는 자료구조입니다. 배열은 고정된 크기를 가지며, 각 요소는 인덱스를 통해 접근할 수 있습니다.

배열 선언 및 초기화

배열을 선언하려면 데이터 타입과 배열의 크기를 지정해야 합니다.

#include <iostream>

int main() {
    int numbers[5] = {1, 2, 3, 4, 5};

    for (int i = 0; i < 5; i++) {
        std::cout << "numbers[" << i << "] = " << numbers[i] << std::endl;
    }

    return 0;
}

출력 결과:

numbers[0] = 1
numbers[1] = 2
numbers[2] = 3
numbers[3] = 4
numbers[4] = 5

배열 크기 자동 설정

초기화 값의 개수에 따라 배열 크기를 자동으로 설정할 수도 있습니다.

int numbers[] = {10, 20, 30};

위 코드에서 배열의 크기는 3으로 자동 설정됩니다.

다차원 배열

C++에서는 2차원 이상의 다차원 배열도 사용할 수 있습니다. 예를 들어, 행렬 데이터를 저장할 때 유용합니다.

#include <iostream>

int main() {
    int matrix[2][3] = {
        {1, 2, 3},
        {4, 5, 6}
    };

    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 3; j++) {
            std::cout << "matrix[" << i << "][" << j << "] = " << matrix[i][j] << " ";
        }
        std::cout << std::endl;
    }

    return 0;
}

출력 결과:

matrix[0][0] = 1 matrix[0][1] = 2 matrix[0][2] = 3
matrix[1][0] = 4 matrix[1][1] = 5 matrix[1][2] = 6

문자열(String)

문자열은 문자들의 배열로 표현되며, C++에서는 C 스타일 문자열std::string을 모두 사용할 수 있습니다.

C 스타일 문자열

C 스타일 문자열은 char 배열을 사용하여 선언합니다. 문자열의 끝은 반드시 \0(널 문자)로 표시해야 합니다.

#include <iostream>

int main() {
    char greeting[] = "Hello, World!";

    std::cout << greeting << std::endl;

    return 0;
}

문자열 입력과 출력

#include <iostream>

int main() {
    char name[50];

    std::cout << "Enter your name: ";
    std::cin >> name;
    std::cout << "Hello, " << name << "!" << std::endl;

    return 0;
}

주의사항

  • std::cin은 공백 문자 이전까지만 입력받습니다.

std::string 사용하기

std::string은 C++ 표준 라이브러리에서 제공하는 문자열 클래스입니다. 더 많은 기능을 제공하며 사용이 편리합니다.

#include <iostream>
#include <string>

int main() {
    std::string name;

    std::cout << "Enter your full name: ";
    std::getline(std::cin, name);
    std::cout << "Hello, " << name << "!" << std::endl;

    return 0;
}

문자열 조작

std::string은 문자열을 쉽게 조작할 수 있는 다양한 멤버 함수를 제공합니다.

#include <iostream>
#include <string>

int main() {
    std::string str1 = "Hello";
    std::string str2 = "World";

    // 문자열 합치기
    std::string result = str1 + ", " + str2 + "!";
    std::cout << result << std::endl;

    // 문자열 길이
    std::cout << "Length of result: " << result.length() << std::endl;

    // 부분 문자열 추출
    std::string sub = result.substr(7, 5);
    std::cout << "Substring: " << sub << std::endl;

    return 0;
}

출력 결과:

Hello, World!
Length of result: 13
Substring: World

문자열 비교

문자열 비교는 ==, <, > 등의 연산자로 수행할 수 있습니다.

#include <iostream>
#include <string>

int main() {
    std::string str1 = "Apple";
    std::string str2 = "Orange";

    if (str1 < str2) {
        std::cout << str1 << " comes before " << str2 << std::endl;
    } else {
        std::cout << str1 << " comes after " << str2 << std::endl;
    }

    return 0;
}

출력 결과:

Apple comes before Orange

배열과 문자열 응용 예제

배열과 문자열을 조합하여 간단한 프로그램을 작성해보겠습니다.

예제: 학생 점수 평균 계산

#include <iostream>
#include <string>

int main() {
    const int numStudents = 3;
    std::string names[numStudents];
    int scores[numStudents];

    for (int i = 0; i < numStudents; i++) {
        std::cout << "Enter name of student " << (i + 1) << ": ";
        std::cin >> names[i];
        std::cout << "Enter score of " << names[i] << ": ";
        std::cin >> scores[i];
    }

    int totalScore = 0;
    for (int i = 0; i < numStudents; i++) {
        totalScore += scores[i];
    }

    double average = static_cast<double>(totalScore) / numStudents;
    std::cout << "Average score: " << average << std::endl;

    return 0;
}

출력 예시:

Enter name of student 1: Alice
Enter score of Alice: 85
Enter name of student 2: Bob
Enter score of Bob: 90
Enter name of student 3: Charlie
Enter score of Charlie: 78
Average score: 84.3333

마치며

이번 글에서는 C++의 배열과 문자열에 대해 기초부터 활용까지 다양한 내용을 다뤘습니다. 배열과 문자열은 모든 프로그래밍에서 기본적인 역할을 하기 때문에, 잘 익혀두는 것이 중요합니다. 다음 포스팅에서는 더 흥미로운 C++ 주제로 찾아오겠습니다.

감사합니다!

반응형

'cpp' 카테고리의 다른 글

C++ 동적 메모리 관리  (0) 2024.12.19
C++ 포인터와 참조  (0) 2024.12.18
C++ 함수  (0) 2024.12.18
C++ 반복문  (0) 2024.12.18
C++ 조건문 (Conditional Statements)  (0) 2024.12.17