● C++ 에서 String의 사이즈 구하는 방법
- data.size();
- 다른 방식의 사이즈 구하는 함수 사용 시 이슈 발생 : sizeof(data.c_str());
● String 사이즈 구하다가 이슈 발생
- C++ 에서 String 사이즈 구하는 방식이 여러가지가 있다.
- size(), length(), capacity() ...
- 그런데 C 언어도 같이 사용하다보니, 오랫만에 C++ 코드를 작성하다가 의도치 않게 sizeof()를 사용하였다.
- 이때, 이슈가 발생하였다.
- String 사이즈를 통해 Memcpy 한 뒤 글자가 깨져서 나와버렸다...
- "삼성 인터넷" 이란 글자가 ... "삼성 xEC" 라고 하면서 이상한 글자가 떡하니... 나와버렸다...
● 이슈 원인
- size() 함수 경우 String의 사이즈를 공백을 포함하여 사이즈를 반환하지만
- 내가 C에서 사용하였던 sizeof()를 사용하였더니...
- Sizeof() 경우 공백을 만나면 거기까지의 String 사이즈를 반환해주면서..
- Memcpy 시 기존 String은 공백이 포함된 문자열이였으나, cpy 할 String에 길이는 공백이 포함되지 않은 String 문자열 사이즈로 문제가 발생된 것이다.
● 결과
- 너무 생각없이 코딩하면 이와 같은 결과를 얻는다.. 조심하자...
C++ String 관련 잘 정리된 블로그
반응형