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

std::setw() considering special characters as two characters

本文关键字:两个 字符 特殊字符 setw std      更新时间:2023-10-16

为什么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

它们是两个字符,请检查 sizeof("®èé") 的值