C++에서 Stringstream 지우기

Suraj P 2023년10월12일
  1. str("")clear() 메서드를 사용하여 C++에서 stringstream 지우기
  2. 범위 지정을 사용하여 C++에서 stringstream 지우기
C++에서 Stringstream 지우기

이 기사에서는 C++에서 stringstreams을 지우거나 비우는 다양한 방법을 설명합니다.

str("")clear() 메서드를 사용하여 C++에서 stringstream 지우기

stringstream을 지우거나 비우려면 str("")clear() 메서드를 사용할 수 있지만 두 메서드를 모두 사용해야 합니다. 그렇지 않으면 프로그램이 제대로 작동하지 않을 수 있습니다. 즉, 올바른 출력을 제공하지 않습니다.

예제 코드(str("")만 사용):

#include <bits/stdc++.h>
using namespace std;

int main() {
  string temp;

  string temp2;

  stringstream ss;

  for (int i = 0; i < 5; i++)

  {
    ss.str("");
    ss << i;
    temp = ss.str();
    ss >> temp2;
    cout << temp << " " << ss.str() << " " << temp2 << endl;
  }
}

출력:

0 0 0
  0
  0
  0
  0

ss.str("")을 사용하면 문자열이 지워지기 때문에 위의 출력은 올바르지 않지만 문제는 스트림에 새 값을 추가할 수 없다는 것입니다.

이것이 바로 첫 번째 줄에서 올바른 출력 0 0 0을 얻지만 다음 반복에서 temptemp2 문자열이 새 값이 스트림에 추가되지 않기 때문에 비어 있게 되는 이유입니다. 따라서 둘 다에 빈 문자열을 할당하는 것과 같습니다.

예제 코드(str("")clear() 함께 사용):

clear() 함수는 스트림의 오류 상태를 재설정합니다. 스트림에 오류가 있을 때마다 오류 상태를 eofbit(파일 끝)로 설정하고 clear()를 사용하여 오류가 없다고 다시 goodbit로 재설정할 수 있습니다.

#include <bits/stdc++.h>
using namespace std;

int main() {
  string temp;

  string temp2;

  stringstream ss;

  for (int i = 0; i < 5; i++)

  {
    ss.clear();
    ss.str("");
    ss << i;
    temp = ss.str();
    ss >> temp2;
    cout << temp << " " << ss.str() << " " << temp2 << endl;
  }
}

출력:

0 0 0
1 1 1
2 2 2
3 3 3
4 4 4

설명: 여기에서 clear()str("")과 함께 사용하여 스트림을 지운 후 스트림에 새 값을 추가할 수 있으므로 올바른 출력을 얻습니다.

범위 지정을 사용하여 C++에서 stringstream 지우기

첫 번째 방법으로는 효과가 없지만 stringstream을 지우는 해결 방법입니다. 범위 지정의 개념을 사용할 수 있습니다.

예제 코드:

#include <bits/stdc++.h>
using namespace std;

int main() {
  {
    stringstream ss;
    ss << "our code part ";
    cout << ss.str() << endl;
  }

  {
    stringstream ss;
    ss << "Tony ";
    cout << ss.str() << endl;
  }

  {
    stringstream ss;
    ss << "stark ";
    cout << ss.str() << endl;
  }
}

출력:

our code part
Tony
stark

설명: 여기에서 stringstream 변수의 범위를 정의하려면 중괄호 { }를 사용해야 합니다. 범위를 벗어나면 지워집니다.

작가: Suraj P
Suraj P avatar Suraj P avatar

A technophile and a Big Data developer by passion. Loves developing advance C++ and Java applications in free time works as SME at Chegg where I help students with there doubts and assignments in the field of Computer Science.

LinkedIn GitHub