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;
}
。OUPUTS:
ok ok
test.. ok again
®èé fail
下面是現場測試:http://ideone.com/q57I0H
使用std的值:: wcout輸出寬字符 – Geoffroy
我猜你正在使用utf8編碼。 gcc中有一個相關的錯誤。請點擊此處:http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33852。您可以將所有字符串轉換爲wchar_t,並使用wcout。 – SHR