2013-01-24 6 views
1

동료 (serioussly 나는 :) * 문자를 사용하지 말아)이로 감소 버그했다 : 그래서 그는 기본적으로이 수정합격 길이가 0 인 문자열 문자 예상 STL 기능에 ('0') *

testVar.append('\0'); //testVar is std::string 

을 그것 :

testVar.append("\0"); 

나의 질문은 왜 첫번째로 isnt 합법인가? 길이가 0 인 종료 문자열로 간주 할 수 있습니까? 나는 VS10 std lib 구현을 시도해 보았습니다.하지만 후회했습니다. :)

+2

요점은 0 값 char 인 '\ 0'은 포인터에 대한 0의 특수 값에 대한 널 포인터로 해석 될 수 있다는 것입니다. 그래서 append ('\ 0')는 append ((const char *) 0)를 호출합니다. –

답변

6

'은 문자열/char *과 같지 않은 char 리터럴을 만듭니다. 일부 언어는 단일 문자를 길이 1 문자열로 취급하지만 C++은 한 문자를 원시 데이터 유형으로 정의하고 문자열은 문자 배열로 정의합니다.

+3

또한 첫 번째 문자에서 '\ 0'은'char '로 취급됩니다. 'const char *'에 대한 널 포인터. – m0nhawk

+0

@ m0nhawk : 참; 네가 지적 할 때까지 나는 그것을 몰랐다. –

+0

@ m0nhawk 좋은 점은 실제로 char *로 변환됩니다. :(이제 분명합니다 :) tnx 또한 A는 nice ofc입니다. – NoSenseEtAl

관련 문제