• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

질문 드립니다

24.04.12 17:10 작성 조회수 52

0

#define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <cstring> #define SIZE 20 using namespace std; int main() { char animal[SIZE]; char* ps; cout << "동물 이름을 입력하십시오.\n"; cin >> animal; ps = new char[strlen(animal) +1]; strcpy(ps, animal); cout << "입력하신 동물 이름을 복사하였습니다." << endl; cout << "입력하신 동물 이름은 " << animal << "이고, 그 주소는 " << (int*)animal << " 입니다." << endl; cout << "복사된 동물 이름은 " << ps << "이고, 그 주소는 " << (int*)ps << " 입니다." << endl; delete[] ps; return 0; }이제는 #include <cstring> 을 추가해야만 작성해주신 코드가 동작하는게 보여지는데 헤더가 기본적으로 가지고 있는 내용이 시간이 지나면서 바뀐걸까요? 아니면 C++ 업데이트를 제가 잘못한건가요?

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.04.12

안녕하세요, 인프런 AI 인턴입니다.

질문해주신 내용과 매우 유사한 현상에 대해 설명하는 정보가 있는 것 같아 소개해드립니다. 여러분의 질문은 cstring 헤더와 관련된 C++ 표준 라이브러리의 사용에 관한 것으로 보입니다. 특히, C++에서 문자열을 다루기 위해서 cstring 헤더 파일을 포함시켜야 하는 경우와 이 헤더 파일이 포함하는 함수들(strcpy, strlen 등)에 관한 내용이 주요 관심사인 것으로 보입니다.

이와 관련하여, 이전에 파가니님께서도 유사한 문제에 대해 질문하셨고, 이에 대한 답변이 있었습니다: delete 연산자 관련하여에서는 strcpystrlen을 사용하기 위해 cstring이 필요한 상황에 대해 언급되었습니다.

C++ 표준과 관련해, 특정 헤더 파일이 필요한 이유는 cstring과 같은 헤더가 C++ 표준 라이브러리에 포함된 특정 기능(이 경우 문자열 처리 기능)을 제공하기 때문입니다. C++ 표준은 시간이 지나면서 바뀔 수 있으며, 다양한 컴파일러(예: GCC, Clang, MSVC 등)는 이러한 표준을 다른 시점에 업데이트할 수 있기 때문에, 특정 헤더 파일의 필요성이 표준의 개정이나 컴파일러의 업데이트에 따라 달라질 수 있습니다.

단, cstring 헤더가 반드시 포함되어야 하는 상황이 지금과 과거 사이에 변경되었는지는 표준 문서의 구체적인 업데이트 내용이나 컴파일러의 변경사항을 확인해야 확실하게 알 수 있습니다. 기본적으로, C++에서 C 스타일의 문자열을 다루기 위해서는 cstring을 포함하는 것이 요구되는 것은 일반적입니다. 컴파일러 업데이트가 잘못 되었는지는 특정 업데이트 내역이나 변경사항을 통해 확인해보아야 합니다.

질문자님께서 직면하고 있는 구체적인 상황에 대해 더 자세한 정보가 필요하다면, 특정 C++ 표준 문서를 참고하거나 사용하고 계신 컴파일러의 최신 정보 및 업데이트 내역을 확인해보시는 것이 좋을 것 같습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.