정수형이나 실수형을 string형으로 바꾸어 사용하려고 ostringstream을 사용했는데
한가지 큰 문제가 있었다. 바로 clear(); 하여도 저장된 내용이 삭제되지 않고
기존 내용에 계속해서 add하는 문제가 발생하였다.
이것저것 찾아보니 아래 블로그에서 해답을 찾았다.
http://egloos.zum.com/mcchae/v/11130705
Clears the stream error state flags by assigning them the value of state.
If rdbuf() == 0 then state | badbit is assigned. May throw an exception.
즉 flags 값만 초기화 시킨다는 것인데 내용을 모두 지우고 다시 새로 문자열을
변환하고 싶다면 아래와 같이 빈 문자열을 str("")하면 된다.
ostringstream oss;
for (int i = 0; i < MAX; i++) {
oss.str("");
oss.clear();
oss.width(5);
oss.fill('0');
oss<<i;
workerNum[i]= oss.str();
}
위 코드는 workerNum[i] 배열에 i값을 넣는 코드이다.
만약 oss.str("")을 빼고 한다면
workerNum[0]에는 "0"
workerNum[1]에는 "01"
workerNum[2]에는 "012"
이런식으로 문자열이 덧붙여져서 들어가므로 주의해야한다.
oss.str("")과 oss.clear(); 를 사용하지 않고 덧붙이기 안되게 값을 넣고싶다면
ostringstream oss; 를 반복문 안에 넣고 쓰면된다.
for (int i = 0; i < MAX; i++) {
ostringstream oss;
oss.width(5);
oss.fill('0');
oss<<i;
workerNum[i]= oss.str();
}
댓글 없음:
댓글 쓰기