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을 얻지만 다음 반복에서 temp 및 temp2 문자열이 새 값이 스트림에 추가되지 않기 때문에 비어 있게 되는 이유입니다. 따라서 둘 다에 빈 문자열을 할당하는 것과 같습니다.
예제 코드(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 변수의 범위를 정의하려면 중괄호 { }를 사용해야 합니다. 범위를 벗어나면 지워집니다.
