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
사용 표준의 값을 확인 :: 넓은 문자 출력을위한 wcout – Geoffroy
utf8 인코딩을 사용하고있는 것 같습니다. gcc에 관련된 버그가 있습니다. 여기에서 확인하십시오 : http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33852. 모든 문자열을 wchar_t로 변환하고 wcout을 사용할 수 있습니다. – SHR