ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 명품 C++ 4장 3번
    C++ 2018. 10. 29. 23:30

    3. string 클래스를 이용하여 빈칸을 포함하는 문자열을 입력받고 문자열에서 'a'가 몇 개 있는지 출력하는 프로그램을 작성해보자.


    1) 문자열에서 'a'를 찾기 위해 string 클래스의 멤버 at()나 []를 이용하여 작성하라.


    #include <iostream>
    using namespace std;
    #include <string>
    int main() {
        string text;
        int aNum=0;
        cout << "문자열 입력>>";
        getline(cin, text);
        for (int i = 0; i < text.length(); ++i) {
            if (text[i] == 'a') ++aNum;
        }
        cout << "문자 a는 " << aNum << "개 있습니다" << endl;
    }


    2) 문자열에서 'a'를 찾기 위해 string 클래스의 find() 멤버 함수를 이용하여 작성하라. text.find('a',index);는 text 문자열의 index 위치부터 'a'를 찾아 문자열 내 인덱스를 리턴한다.


    #include <iostream>
    using namespace std;
    #include <string>
    int main() {
        string text;
        int aNum=0;
        int index = 0;
        cout << "문자열 입력>>";
        getline(cin, text);
        for (int i = index; i < text.length(); ++i) {
            int n = text.find('a', index);
            if (n>index) {
                ++aNum;
                index = n+1;
            }
        }
        cout << "문자 a는 " << aNum << "개 있습니다" << endl;
    }


    실행결과 (두 문제 모두 실행결과 같음)



    string 클래스의 find()함수에서 text.find('a',index);는 text문자열의 index위치부터 'a'를 찾아 문자열 내 인덱스를 리턴합니다.

    index를 리턴 한 값에 1을 증가시켜 다음 부터 찾을 수 있게 합니다.

    'C++' 카테고리의 다른 글

    명품 C++ 4장 5번  (0) 2018.10.29
    명품 C++ 4장 4번  (0) 2018.10.29
    명품 C++ 4장 2번  (0) 2018.10.29
    명품 C++ 4장 1번  (0) 2018.10.29
    명품 C++ 3장 Open Challenge  (0) 2018.10.29

    댓글

© 2018 TISTORY. All rights reserved.