[C++] \r이 포함된 문자열 출력할 때 이상하게 출력되는 현상
```cpp
#include <iostream>
#include <sstream>
using namespace std;
int main() {
string item = "abc\r\ndef\nghi"; // contain \r
istringstream stream(item);
while (getline(stream, item)) {
cout << item << item.length() << '\n'; // item << item.length() may be folded
}
return 0;
}
```
실행 결과
```
4bc
def3
ghi3
```
문자열에 `` \r``이 포함되어 있는 경우, 이걸 파싱하면서 캐리지 리턴이 적용되어 커서가 맨 앞으로 가기 때문에 그 이후에 출력되는 데이터는 맨 앞에서부터 출력되어 이전에 출력된 데이터를 덮어 써버리는 결과를 가져온다.
그래서 `` \r``이 포함된 문자열 파싱 및 출력은 주의해주어야 한다.
조금 더 간단한 예제는
```cpp
int main() {
std::string item = "abcdefg\r";
std::cout << item << "1234" << '\n';
return 0;
}
```
```
1234efg
```
'Languages & Frameworks > C C++' 카테고리의 다른 글
[C++] 컨테이너 안에 클래스가 들어있을 때, 클래스 안의 멤버들을 순회하는 이터레이터를 반환받는 방법 + mem_fn (0) | 2018.09.03 |
---|---|
[C/C++] strncpy()는 NULL문자를 넣어주지 않는다. (0) | 2018.08.21 |
[C++] 맵 : unordered_map (hash_map) (2) | 2018.08.20 |
[C++] directory listing (traversal) (0) | 2018.08.10 |
[C/C++] clock : 수행 시간 측정 / logging : 에러 출력 (0) | 2018.08.09 |