Koenig의 Accelerated C ++를 읽고 있습니다. 그는 "새로운 아이디어는 +를 사용하여 문자열과 문자열 리터럴을 연결할 수 있다는 것입니다. 또는 그 문제에 대해 두 문자열 (하지만 두 문자열 리터럴은 아님)을 연결할 수 있습니다.
좋아, 이건 말이 돼. 이제이를 조명하기위한 두 개의 개별 연습으로 넘어갑니다.
다음 정의가 유효합니까?
const string hello = "Hello";
const string message = hello + ",world" + "!";
이제 위의 내용을 실행 해 보았습니다. 그래서 행복했습니다.
그런 다음 다음 운동을 시도했습니다.
const string exclam = "!";
const string message = "Hello" + ",world" + exclam;
이것은 작동하지 않았습니다. 이제 두 개의 문자열 리터럴을 연결할 수 없다는 사실과 관련이 있다는 것을 이해합니다.하지만 첫 번째 예제를 작동하게 만든 이유 ( ", world"및 "! "두 개의 문자열 리터럴? 이것이 작동하지 않았어야 했습니까?) 그러나 두 번째는 아닙니다.
"Hello" + ", world!"
당신이 할 수있을 때 왜 누군가가 글을 쓰 겠는가 "Hello, world!"
. 평소와 같이 C ++에는 인식 된 문제에 대한 훌륭하고 간단한 해결 방법이 있습니다. :-)
"Hello" ", world!"
(없이 +
) 쓸 가능성이 더 큽니다 . C ++에 대해 제기 할 수있는 많은 불만이 있지만 여기에서 처리하는 것이 그중 하나라고 생각하지 않습니다. 마치 당신이 썼던 것과 똑같고 1 / 3 + 1.5
, 나눗셈이 완전한 나눗셈이기 때문에 불평했습니다. 좋든 나쁘 든 이것이 대부분의 언어가 작동하는 방식입니다.
"hello" " world" == "hello world"
은 긴 문자열을 작성해야하고 창 밖으로 나가는 것을 원하지 않거나 줄 길이를 제한하려는 경우에 유용합니다. 또는 문자열 중 하나가 매크로에 정의 된 경우.
const string message = "Hello" ",world" + exclam
(예 : 첫 번째 생략+
) 잘 작동합니다.