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
변수의 범위를 정의하려면 중괄호 { }
를 사용해야 합니다. 범위를 벗어나면 지워집니다.