본문 바로가기
C++

[C++] String 사이즈 관련 이슈 기록

by 중곰 2021. 2. 3.

● 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 관련 잘 정리된 블로그

https://blockdmask.tistory.com/338

반응형