Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++ 쉼표로 구분된 문자열에서 정수를 추출하는 프로그램

<시간/>

쉼표로 구분된 정수가 거의 없는 문자열이 있다고 가정합니다. 우리는 그것들을 분리하고 각 정수를 다른 줄에 표시해야 합니다. 이를 위해 C++에서 stringstream(sstream 라이브러리 아래)을 사용할 것입니다. 이것은 C++에 있는 하나의 문자열 기반 스트림 클래스입니다. 추출 연산자(<<)를 사용하여 무언가를 추출하고 삽입 연산자(>>)를 사용하여 무언가를 삽입하고 str() 함수를 사용하여 기본 문자열 장치 개체의 내용을 설정할 수 있습니다.

따라서 입력이 s ="56,9,85,256,47"과 같으면 출력은

56
9
85
256
47

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 배열 정의 take_int(string str)

    • ss

      라는 문자열 스트림 개체를 하나 생성합니다.
    • 배열 결과 정의

    • ss에서 temp로 가져온 새 정수 항목이 null이 아닌 동안 다음을 수행합니다.

      • 결과 끝에 tmp 삽입

      • 단일 문자를 제거하여 쉼표 문자 건너뛰기

    • 반환 결과

  • 기본 방법에서 다음을 수행합니다.

  • 배열 정수 정의 =take_int(s)

  • initialize i :=0의 경우, i <정수 크기일 때 업데이트(i 1만큼 증가), 수행:

    • 정수 표시[i]

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

#include <iostream>
#include <sstream>
#include <vector>
using namespace std;
vector<int> take_int(string str) {
    stringstream ss(str);
    vector<int> result;
    char ch;
    int tmp;
    while(ss >> tmp) {
        result.push_back(tmp);
        ss >> ch;
    }
    return result;
}
int main(){
    string s = "56,9,85,256,47";
    vector<int> integers = take_int(s);
    for(int i = 0; i < integers.size(); i++)
        cout << integers[i] << "\n";
}

입력

56,9,85,256,47

출력

56
9
85
256
47