mbswidth_l()
会更好,因为我不想使用wchar_t,但由于某种原因它并不存在)。但除了其他平台外,我需要在Windows上也能够实现该功能。虽然可能没有可移植的解决方案,但我不知道Windows上是否有任何解决方案。我认为控制台应该有一个API可以获取光标位置等信息,所以我可以输出文本并检查位置的变化。这样可能是准确的,但额外输出是完全不可接受的。
如何在Windows上获取字符串或字符的列宽?
编辑:
wcswidth_l返回显示字符串所用的控制台列数。有些字符占用一个列,而其他字符(例如日语字符)占用两个。
例如,“a あ”的“列宽”为四。'a'是一个,' '是一个,而'あ'则为两个。(假设控制台实际上设置为显示非ASCII字符)。此外,如果API支持使用代码页65001(UTF-8)的字符串,则更好。