C ++에서 "+"를 사용한 정수 변수 및 문자열 연결에 대한 매우 기본적인 질문

FruDe

저는 C ++를 처음 사용하고이 질문은 많은 사람들에게 사소한 것처럼 보일 수 있지만 C ++ 언어를 시작하는 중이라는 것을 명심하십시오.

변수 x를 같게 할당했고 20이를 문자열과 연결하고 싶습니다. 내 C ++ 코드는 다음과 같습니다.

#include <iostream>
#include <string>
#include <cmath>
using namespace std;

int main() {
  int x = 20;
  int y = 15;
  if (x >= y) {
    cout << x + " is greater than " + y;
  }
}

내 예상 결과는 20 is greater than 15이지만 대신 나타나는 것은 약간 이상 é@합니다. 혼란스럽고 GeeksForGeeks, w3schools 또는 나머지 SO에서 솔루션을 찾을 수 없습니다.

나는 사용 cout << x << " is greater than " << y;이 잘 작동 한다는 것을 이해 하지만 왜 여기에서 연결이 작동하지 않는지 잘 모르겠습니다. 또한 왜이 이상한 캐릭터가 대신 나오는 걸까요?

미리 감사드립니다.

(또한, 질문에 대답하지 않고 대답을 방치하지 마십시오. 시작 JS 내가 질문을하고있는 유일한 대답은 때 내가 기억 "사용하지 마십시오 document.write."나는 그것을 얻을 수 있지만, 실제로는 훨씬 더하는 것입니다 대답 을 질문하고 그것을 부수적으로 넣으십시오.)

jcai

이상한 출력을 얻는 이유는 C ++의 역사의 일부가 C의 진화이기 때문입니다. 표현식 x + " is greater than " + y에서 표현식 " is greater than "const char*원시 C 스타일 유형 인 리터럴입니다. std::string이전 버전과의 호환성 이유로 인해 C ++ 클래스 유형이 아닙니다 .

귀하의 +기호는 const char*. 그 결과 포인터 산술이 발생합니다. 기본적 " is greater than "되고 const char*, 그 내용이다 ASCII 바이트 일부 메모리 버퍼에 대한 포인터이다 " is greater than ". 추가의 효과 xy그것과는 버퍼의 끝을 가서 초기화되지 않은 메모리를 읽을 수있는 권리 35 바이트 포인터를 이동하는 것입니다. 그것이 나오는 "이상한 캐릭터"입니다. 올바르게 말하면 이것은 정의되지 않은 동작이므로 모든 일이 발생할 수 있습니다. 실제 시스템에서는 버퍼 오버 플로우 읽기가되어 횡설수설 문자가 발생합니다.

다른 사람들이 지적했듯이 이것을 수정하는 방법 std::to_string은 정수 에 사용 하는 것입니다. 그런 다음 int + const char* + int당신 대신에 std::string + const char* + std::string훨씬 더 잘 처리됩니다.

이것이 명확하지 않은 경우 포인터, C 스타일 문자열 및 버퍼 오버플로를 찾아 더 많은 정보를 얻을 수 있습니다.

편집 : 기술적으로 말하는 문자열 리터럴은 const char[]있지만 명확성을 위해 이것을 생략했습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

값에 대한 배열 및 문자열 변수 연결

분류에서Dev

효과적인 C ++ 항목 4 읽기에 대한 질문 (비 지역 정적 변수를 지역 정적 변수로 대체)

분류에서Dev

Char 문자열 및 포인터에 대한 C ++ 질문

분류에서Dev

C ++에서 포인터를 알아낼 수 없습니다! 기본 문자열 및 포인터에 대한 정보가 필요합니다.

분류에서Dev

자바에서 SQL에 대한 문자열 매개 변수 및 SELECT 준비 문

분류에서Dev

첫 번째에 연결할 수없는 경우 SQL Server에 대한 다른 연결 문자열로 C # 변경

분류에서Dev

C에서 정수 포인터 변수의 크기에 관한 질문

분류에서Dev

WeakMap 및 개인 변수에 대한 질문

분류에서Dev

Python 용 스파이더 및 아나콘다에 대한 매우 기본적인 설정 문제

분류에서Dev

Rust 정적 수명 및 범위에 대한 질문

분류에서Dev

열 및 행 값에 대한 범위 선택 내에서 문자열 변수를 사용하는 Excel VBA

분류에서Dev

사용자 정의 함수를 사용한 문자열 편집 및 연결

분류에서Dev

render () 내에서 상태 변수를 참조하는 방법에 대한 매우 빠른 질문-React Native

분류에서Dev

문자열 및 정수 매개 변수를 사용한 JSP 양식 제출

분류에서Dev

"문자열 유형의 인수가 사용자 정의 유형의 매개 변수에 할당 할 수 없음"에 대한보기 흉한 문제

분류에서Dev

C ++에서 배열 초기화 및 크기 조정에 대한 질문

분류에서Dev

Karate를 사용하여 POST 메서드에서 양식 매개 변수에 대한 입력으로 문자열 및 파일을 전달하는 방법

분류에서Dev

재귀를 사용한 문자열 순열에 대한 질문

분류에서Dev

FOR 루프 배치 구문에서 변수를 사용한 문자열 대체

분류에서Dev

whiptail 및 bash 함수에 대한 질문

분류에서Dev

ASP.NET Core 3.1의 QueryString 문자열 매개 변수에 대한 사용자 지정 모델 바인더?

분류에서Dev

Django REST 프레임 워크-날짜 및 문자열 매개 변수를 사용하여 쿼리 매개 변수에 대한 필터링

분류에서Dev

do 후 메서드 반환 값 및 인수에 대한 질문

분류에서Dev

C에서 문자열 수, 부동 정수, 문자, 단어 및 문장 수를 기반으로 한 등급 공식 문제

분류에서Dev

매우 기본적인 CS 질문-숫자 정렬 속도는 정수 크기에 따라 달라 집니까?

분류에서Dev

RPC에 대한 문자열 및 정수 인코딩

분류에서Dev

정적 및 공유 라이브러리에 대한 C 질문

분류에서Dev

줄 및 문자열 찾기 기능에 대한 질문

분류에서Dev

C #에서 매개 변수가있는 쿼리를 사용하여 SQL에서 IN 연산자에 대한 매개 변수 보내기

Related 관련 기사

  1. 1

    값에 대한 배열 및 문자열 변수 연결

  2. 2

    효과적인 C ++ 항목 4 읽기에 대한 질문 (비 지역 정적 변수를 지역 정적 변수로 대체)

  3. 3

    Char 문자열 및 포인터에 대한 C ++ 질문

  4. 4

    C ++에서 포인터를 알아낼 수 없습니다! 기본 문자열 및 포인터에 대한 정보가 필요합니다.

  5. 5

    자바에서 SQL에 대한 문자열 매개 변수 및 SELECT 준비 문

  6. 6

    첫 번째에 연결할 수없는 경우 SQL Server에 대한 다른 연결 문자열로 C # 변경

  7. 7

    C에서 정수 포인터 변수의 크기에 관한 질문

  8. 8

    WeakMap 및 개인 변수에 대한 질문

  9. 9

    Python 용 스파이더 및 아나콘다에 대한 매우 기본적인 설정 문제

  10. 10

    Rust 정적 수명 및 범위에 대한 질문

  11. 11

    열 및 행 값에 대한 범위 선택 내에서 문자열 변수를 사용하는 Excel VBA

  12. 12

    사용자 정의 함수를 사용한 문자열 편집 및 연결

  13. 13

    render () 내에서 상태 변수를 참조하는 방법에 대한 매우 빠른 질문-React Native

  14. 14

    문자열 및 정수 매개 변수를 사용한 JSP 양식 제출

  15. 15

    "문자열 유형의 인수가 사용자 정의 유형의 매개 변수에 할당 할 수 없음"에 대한보기 흉한 문제

  16. 16

    C ++에서 배열 초기화 및 크기 조정에 대한 질문

  17. 17

    Karate를 사용하여 POST 메서드에서 양식 매개 변수에 대한 입력으로 문자열 및 파일을 전달하는 방법

  18. 18

    재귀를 사용한 문자열 순열에 대한 질문

  19. 19

    FOR 루프 배치 구문에서 변수를 사용한 문자열 대체

  20. 20

    whiptail 및 bash 함수에 대한 질문

  21. 21

    ASP.NET Core 3.1의 QueryString 문자열 매개 변수에 대한 사용자 지정 모델 바인더?

  22. 22

    Django REST 프레임 워크-날짜 및 문자열 매개 변수를 사용하여 쿼리 매개 변수에 대한 필터링

  23. 23

    do 후 메서드 반환 값 및 인수에 대한 질문

  24. 24

    C에서 문자열 수, 부동 정수, 문자, 단어 및 문장 수를 기반으로 한 등급 공식 문제

  25. 25

    매우 기본적인 CS 질문-숫자 정렬 속도는 정수 크기에 따라 달라 집니까?

  26. 26

    RPC에 대한 문자열 및 정수 인코딩

  27. 27

    정적 및 공유 라이브러리에 대한 C 질문

  28. 28

    줄 및 문자열 찾기 기능에 대한 질문

  29. 29

    C #에서 매개 변수가있는 쿼리를 사용하여 SQL에서 IN 연산자에 대한 매개 변수 보내기

뜨겁다태그

보관