Koenig는 자신의 저서 "Accelerated C"에서 ' ' 연산자를 사용하여 문자열을 연결하는 개념을 소개합니다. 리터럴과 객체. 간단해 보일 수도 있지만 예상치 못한 결과로 이어질 수 있는 미묘한 차이가 있습니다.
다음 두 가지 예를 고려해 보세요.
<code class="cpp">const string hello = "Hello"; const string message = hello + ",world" + "!";</code>
<code class="cpp">const string exclam = "!"; const string message = "Hello" + ",world" + exclam;</code>
첫 번째 예에서는 세 문자열을 성공적으로 연결합니다. 그러나 두 번째 예는 실패합니다.
불일치를 이해하려면 ' ' 연산자의 연관성을 고려해야 합니다. ' ' 연산자는 왼쪽에서 오른쪽으로 결합됩니다. 즉, 왼쪽에서 오른쪽으로 평가됩니다. 이를 고려하지 않으면 예상치 못한 동작이 발생할 수 있습니다.
두 번째 예에서 표현식은 다음과 같이 괄호로 묶을 수 있습니다.
<code class="cpp">const string message = ("Hello" + ",world") + exclam;</code>
보시다시피 두 개의 문자열 리터럴 " Hello"와 ",world"가 먼저 연결됩니다. 이로 인해 문자열 개체 "exclam"과 더 이상 연결할 수 없는 문자열 리터럴이 생성됩니다.
이 문제를 해결하는 방법에는 여러 가지가 있습니다.
<code class="cpp">const string message = string("Hello") + ",world" + exclam;</code>
<code class="cpp">const string message = "Hello" + (",world" + exclam);</code>
' ' 연산자는 문자열 리터럴이 아닌 문자열 개체를 연결하도록 설계되었습니다. 문자열 리터럴은 문자 배열이며 표현식에 사용될 때 초기 요소에 대한 포인터로 변환됩니다. 문자열 리터럴을 연결하는 경우처럼 두 개의 포인터를 추가하는 것은 C에서 허용되지 않습니다.
' ' 연산자를 사용하여 문자열 리터럴을 연결할 수는 없지만 다음을 수행할 수 있습니다. 나란히 배치하여 결합:
<code class="cpp">"Hello" ",world"</code>
이것은 다음과 동일합니다:
<code class="cpp">"Hello,world"</code>
긴 문자열 리터럴을 여러 줄로 나누는 데 유용합니다.
위 내용은 \' \' 연산자를 사용하여 문자열 리터럴과 개체를 어떻게 안전하게 연결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!