2017-04-10 7 views
0

C++ 11 및 컴파일러는 TDM-GCC입니다.C++ 또는 wcout " n"이 포함 된 문자열

WinAPI에서GetPrivateProfileStringW로 ini 파일을 만들고 문자열 (UCS-2 LE BOM)을 읽었습니다.

[String] 
Example = Today\nYesterday\nApple 

내 함수 라이브러리는 변수 std :: wstring을 반환합니다. 그리고 괜찮아 보입니다.

#include <iostream> 
#include <string> 

using namespace std; 
wstring readString = GetPrivateProfileStringW(); // Hide the details. 
wcout << readString << endl; 

그리고 내 화면에 무엇을 어떻게해야합니까 : 다음 wcout 사용처럼

Today\nYesterday\nApple 

내가 원하는 것은 :

Today 
Yesterday 
Apple 

잘 모르겠어요 왜 " \ n "이 상황에서는 작동하지 않습니다.

이를 방지하기 위해 여러 INI 키를 생성하고 "endl"을 사용하여이를 제거 할 수 있습니다.

하지만이 프로젝트에서는 여기 주위의 몇 줄이 동적이어야합니다.

Windows API의 단일 문자열 변수를 화면에 표시하려면 어떻게해야합니까? 여러 줄로 표시하려면 어떻게합니까?

+3

' "\ n"'는 wcout이 아니라 컴파일러에 의해 변환됩니다. INI 파일은 컴파일러를 통해 전달되지 않습니다. 문자는 축 어적으로 쓰여졌습니다. 이것이 예상되는 동작입니다. 줄 바꿈을 원하면 문자열을 직접 파싱해야합니다. – IInspectable

+0

@IInspectable 고맙다. 나는 당신의 제안을 따를 것이다. –

답변

0

시퀀스 \n컴파일러에 의해 리터럴 문자열 또는 문자의 일부로 소스 코드로만 인식됩니다. 도서관이나 표준 기능에 내장 된 것은 아무것도 아닙니다.

시퀀스가 ​​외부 소스에서 읽은 입력 내용 내에서 새 라인을 나타내도록하려면 직접 처리해야합니다.

+0

이것은 내가 상상했던 것보다 더 복잡해 보입니다. 고맙습니다. 아마도 어떤 코드 라이브러리가 좋은 아이디어라는 것을 알게 될 것입니다 ... –

+0

@ 2BEmperor''\\ n "'문자열을 실제 개행 문자 ''\ n" '로 대체하는 것만으로도 쉽습니다. –

+0

전혀 아닙니다. 나는 다른 프로그래밍 언어 파이썬 등에서 \\ n을 알고 있습니다. 그것은 Windows API가 아니라 \\를 추가했습니다. INI에서 특별한 표시를 추가하고 소스 코드에서 \ n으로 바꿔야한다고 생각합니다. –