본문 바로가기
C++, MFC

[MFC] warning C4129: 문자 이스케이프 시퀀스를 인식할 수 없습니다 / Line 1686 등 CString format 에러

by dev_drive 2023. 1. 11.
반응형

 

warning C4129: 문자 이스케이프 시퀀스를 인식할 수 없습니다

CString sformat = _T("format");

CString str;
str.Format(_T("C:\Program Files\Google\%s"), sformat);

주로 프로그램의 경로를 입력할 때 많이 볼 수 있는데

위와 같이 \t, \n, \r 등 기능이 있는 예약된 문자('\')를 사용할 경우 발생되는 에러입니다. 

 

 

 

CString sformat = _T("format");

CString str;
str.Format(_T("C:\\Program Files\\Google\\%s"), sformat);

'\'를 문자로 표현하고 싶다면 '\\' 처럼 2번 입력합니다. 

2번 입력해도 실제 값은 '\'로 변환되어 출력됩니다.

 

 


 

 

corecrt_internal_stdio_output.h  Line: 1686 에러

File: minkernel\crts\ucrt\inc\corecrt_internal_stdio_output.h
Line: 1686 
Expression: ("Incorrect format specifier", 0)

 

CString sformat = _T("format");

CString str;
str.Format(_T("100% %s"), sformat);

역시 마찬가지로 %s, %d, %f등 기능이 있는 예약된 문자('%')를 사용할 경우 발생되는 에러입니다.

 

그냥 문자열에 100%만 입력한다면 아무 이상 없이 동작하겠지만

뒤에 %s로 변수를 전달했을 때 앞에 '% ' 부분때문에 문제가 생깁니다.

 

 

 

CString sformat = _T("format");

CString str;
str.Format(_T("100%% %s"), sformat);

format에 문제 없이 '%'를 문자로 표현하고 싶다면 '%%' 처럼 2번 입력합니다.

마찬가지로 2번 입력해도 실제 값은 '%'로 변환되어 출력됩니다.

 

 

반응형

댓글