2015-01-15 5 views
-1

SFML을 사용하여 C++로 게임을 만들 때 프랑스어 문자를 지원하는 글꼴을 발견했습니다. 그러나 프로그램에서 다른 언어를 지원할 수 있도록 파일의 모든 텍스트를 읽었지만 오류없이 텍스트를 다양한 문자열로 추출하는 방법을 모르겠습니다.C에서 문자를 넓히는 방법

using namespace std; 
using namespace sf; 

void SettingsW :: initialize() 
{ 

// using normal characters it reads the files correctly 

    wifstream settTextFile; 
    settTextFile.open(pageTextSource); 
    wstring temp; 

    getline(settTextFile, temp); 
    pageTitle.setFont(pageFont); 
    pageTitle.setString(temp); 

    getline(settTextFile, temp, L' '); 
    languageTitle.setFont(pageFont); 
    languageTitle.setString(temp); 

//here is the problem 
    char g=' '; 
    ios::widen(g); 
    getline(settTextFile, temp, ' ')); 
// I want to use get line with this delimiter and when I use the L the error goes away 
//but it doesn't display properly: é is displayed as ã 
} 

답변

1

그것은 당신의 문제가 무엇인지 너무나 분명하지 않다 :

여기 내 코드입니다. 현재 코드 을 컴파일하면 안됩니다. ios::widen은 멤버 함수이며 ( std::basic_ios<char>에 대한 typedef이며 코드에는 인스턴스가 없음)에서만 을 호출 할 수 있습니다. 또한, ios::widen 제외하고는 넓어진 문자를 반환 std::basic_ios<wchar_t>::widen) doesn't widen, since it returns a 반대 ios::widen (문자 . If you want to use the character in g the delimiter in the last call to 표준 : getline`, 당신은 사용할 수 있습니다

std::getline(settTextFile, tmp, settTextFile.widen(g)); 

(물론, 당신은 std::getline이 성공하는지 확인해야 가 읽은 값을 사용하여 전) “에 관해서

가 제대로 표시되지 않습니다 ” :. 당신은 당신이 얼마나에 관하여 더 많은 정보를 제공해야합니다 우리에게 확실하게 표시되어 있지만, 그럴 것 같습니다. 윈도우의 코드 페이지 (Windows의 경우)와 동일한 인코딩을 사용하여 출력 스트림을 채우지 않았거나 글꼴은 창에서 사용됩니다 ( 유닉스 가정). 그러나 완전한 답변을 원하면 이 표시되고 어떻게 표시되는지 정확히 알려야하고 환경에 대한 정보를 에게 알려줘야합니다.