std :: setw()将特殊字符视为两个字符

时间:2014-02-26 11:32:21

标签: c++ c++11 special-characters iomanip 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

1 个答案:

答案 0 :(得分:0)

他们 两个字符,请检查sizeof("®èé")

的值