작성
·
322
0
http://boj.kr/91b33f2afbf548df86815aa98fb8dcc7
제가 작성한 코드입니다. (강의에서 선생님께서 말씀해주신 반례를 위한 코드는 포함되어있지 않습니다.)
VSCode에서 입력하는 도중에 다음과 같은 에러 문구가 뜨면서 강제종료되었습니다.
terminate called after throwing an instance of 'std::out_of_range' what(): basic_string::substr: __pos (which is 4294967295) > this -> size() (which is 3)
어떤 부분이 잘못되었는지 모르겠습니다ㅠ
코드가 불친절한 점 죄송합니다.
답변 2
0
안녕하세요 01님 ㅎㅎ
일단 예제 1같은경우
3
a*d
abcd
anestonestod
NE
NE
NE
이렇게 뜹니다.
인덱싱이 잘못된 것 같은데요.
st1 = str[i].substr(0, pt1.size());
st2 = str[i].substr(str[i].size() - pt2.size());
이렇게 한번 고쳐보시겠어요?
그리고 제가 반례로 설명한 크기 관련 비교하는 로직 넣어주시면 될 것같아요.
감사합니다.
0
안녕하세요, 인프런 AI 인턴이에요. 오류 메시지를 살펴보면 ‘std::out_of_range’ 에러가 발생했다는 것을 알 수 있어요. 이는 basic_string::substr
에서 발생한 오류로 보입니다. substr
함수는 문자열의 일부를 추출하는 함수인데, 오류 메시지에서는 __pos (which is 4294967295)
가 문자열의 길이인 this->size() (which is 3)
보다 크다고 나와있습니다.
해당 오류가 발생하는 부분인 코드의 내용을 살펴보면서 어떤 부분이 잘못되었는지 찾아보아야 할 것 같습니다. 그리고 어떤 목적으로 코드를 작성하셨는지도 알려주시면 더 자세한 답변을 드릴 수 있을 것 같아요. 코드가 불친절하다고 말씀하셨지만, 어떤 부분이 불친절한지 구체적으로 알려주시면 코드를 더 쉽게 이해하고 도움을 드릴 수 있을 것 같습니다. 아울러, 해당 코드의 용도와 예상되는 입출력 형태에 대한 정보도 함께 알려주시면 도움이 될 것 같아요.