강의로 돌아가기
 Won Seong-Yeon

[C/C++] 문제 실행 시, 한글 깨짐 문제에 대하여 질의드립니다.

[실행] -> [실행 결과]에서 한글 깨짐 현상이 있어, 질의를 드립니다.

기댓값 : [Prodo님이 들어왔습니다.,
실행결과값 : 실행한 결괏값 { Prodo\xEB\x8B\x98\xEC\x9D\xB4 \xEB\x93\xA4\xEC\x96\xB4\xEC\x99\x94\xEC\x8A\xB5\xEB\x8B\x88\xEB\x8B\xA4.,

어떻게 하면 정상적으로 한글을 출력할 수 있는지 궁금합니다.

관련 해서..

  1. VS2017에서 작성하고 해당 코드를 복사 - 붙여넣기를 하였습니다. (해당 프로젝트의 문자 인코딩 방식은 MBCS입니다.)
  2. string을 합칠 때는 string::append(string& Other)를 사용했습니다.
const string CONST_ENTER_STRING {"님이 들어왔습니다."};
userLogCont[InIndex].userIter->second.append(CONST_ENTER_STRING);

작성한 전체 코드는 아래와 같습니다

깃헙 - 해당 소스파일 링크 (클릭)

감사합니다.

  • seongmin
    저도 같은 문제가 발생하는데 혹시 해결하셨나요? 저같은 경우 기본 코드를 1줄도 안바꾸고 실행을 해도 기대값 출력시 깨지네요. seongmin 2019.01.16 23:45
  •  Won Seong-Yeon
    성민님! 실행 결과값이 아무런 의미가 없어요... 그냥 맞으면 통과가 되고, 작성한 코드가 틀리면 저렇게 출력됩니다...! @seongmin Won Seong-Yeon 2019.01.29 01:31
1 개의 답변
이확영

깃헙에 있는 코드를 실행해보니 결과값 앞에 space가 포함이 되어 있어서 실제로 값이 다른 것 같습니다.
nickname을 parsing하는 코드에 문제가 있지 않나 생각됩니다.

" Prodo\xEB\x8B\x98\xEC\x9D\xB4 \xEB\x93\xA4\xEC\x96\xB4\xEC\x99\x94\xEC\x8A\xB5\xEB\x8B\x88\xEB\x8B\xA4."
"Prodo\xEB\x8B\x98\xEC\x9D\xB4 \xEB\x93\xA4\xEC\x96\xB4\xEC\x99\x94\xEC\x8A\xB5\xEB\x8B\x88\xEB\x8B\xA4."
기댓값 〉   ["Prodo님이 들어왔습니다.", "Ryan님이 들어왔습니다.", "Prodo님이 나갔습니다.", "Prodo님이 들어왔습니다."]
실행 결과 〉   실행한 결괏값 { " Prodo\xEB\x8B\x98\xEC\x9D\xB4 \xEB\x93\xA4\xEC\x96\xB4\xEC\x99\x94\xEC\x8A\xB5\xEB\x8B\x88\xEB\x8B\xA4.", " Ryan\xEB\x8B\x98\xEC\x9D\xB4 \xEB\x93\xA4\xEC\x96\xB4\xEC\x99\x94\xEC\x8A\xB5\xEB\x8B\x88\xEB\x8B\xA4.", " Prodo\xEB\x8B\x98\xEC\x9D\xB4 \xEB\x93\xA4\xEC\x96\xB4\xEC\x99\x94\xEC\x8A\xB5\xEB\x8B\x88\xEB\x8B\xA4.\xEB\x8B\x98\xEC\x9D\xB4 \xEB\x82\x98\xEA\xB0\x94\xEC\x8A\xB5\xEB\x8B\x88\xEB\x8B\xA4.", " Prodo\xEB\x8B\x98\xEC\x9D\xB4 \xEB\x93\xA4\xEC\x96\xB4\xEC\x99\x94\xEC\x8A\xB5\xEB\x8B\x88\xEB\x8B\xA4.\xEB\x8B\x98\xEC\x9D\xB4 \xEB\x82\x98\xEA\xB0\x94\xEC\x8A\xB5\xEB\x8B\x88\xEB\x8B\xA4.\xEB\x8B\x98\xEC\x9D\xB4 \xEB\x93\xA4\xEC\x96\xB4\xEC\x99\x94\xEC\x8A\xB5\xEB\x8B\x88\xEB\x8B\xA4." }이(가) 기댓값 { "Prodo\xEB\x8B\x98\xEC\x9D\xB4 \xEB\x93\xA4\xEC\x96\xB4\xEC\x99\x94\xEC\x8A\xB5\xEB\x8B\x88\xEB\x8B\xA4.", "Ryan\xEB\x8B\x98\xEC\x9D\xB4 \xEB\x93\xA4\xEC\x96\xB4\xEC\x99\x94\xEC\x8A\xB5\xEB\x8B\x88\xEB\x8B\xA4.", "Prodo\xEB\x8B\x98\xEC\x9D\xB4 \xEB\x82\x98\xEA\xB0\x94\xEC\x8A\xB5\xEB\x8B\x88\xEB\x8B\xA4.", "Prodo\xEB\x8B\x98\xEC\x9D\xB4 \xEB\x93\xA4\xEC\x96\xB4\xEC\x99\x94\xEC\x8A\xB5\xEB\x8B\x88\xEB\x8B\xA4." }와(과) 다릅니다.
  •  Won Seong-Yeon
    안녕하세요. 이확영님, 질문을 작성한 원성연입니다! 말씀해주신 사항 참고해서 코드 수정하여, 알고리즘을 해결할 수 있었습니다. 감사합니다. 좋은 하루 되세요 :) Won Seong-Yeon 2019.01.29 01:28
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.