2014-02-26 3 views
0

std :: setw()가 특수 문자를 두 문자로 간주하는 이유는 무엇입니까? 이 문제를 해결할 수있는 쉽고 세련된 방법이 있습니까?std :: setw() 특수 문자를 두 문자로 간주

예 :

#include <iostream> 
#include <iomanip> 

int main() 
{ 
    std::cout << std::left << std::setw(10) << "ok" << "ok" << std::endl; 
    std::cout << std::left << std::setw(10) << "test.." << "ok again" << std::endl; 
    std::cout << std::left << std::setw(10) << "®èé" << "fail" << std::endl; 

    return 0; 
} 

으로 출력한다 : 여기

ok  ok 
test.. ok again 
®èé fail 

라이브 테스트입니다 : http://ideone.com/q57I0H

+0

사용 표준의 값을 확인 :: 넓은 문자 출력을위한 wcout – Geoffroy

+0

utf8 인코딩을 사용하고있는 것 같습니다. gcc에 관련된 버그가 있습니다. 여기에서 확인하십시오 : http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33852. 모든 문자열을 wchar_t로 변환하고 wcout을 사용할 수 있습니다. – SHR

답변

0

그들은 두 문자입니다은 sizeof("®èé")

관련 문제