什么样的格式应该提升wdirectory_iterator的回报?

时间:2009-05-01 08:47:38

标签: c++ unicode boost utf-8

如果文件包含£(井号)符号,则directory_iterator会正确返回utf8字符序列\ xC2 \ xA3

wdirectory_iterator使用宽字符,但仍返回utf8序列。这是wdirectory_iterator的正确行为,还是我错误地使用它?

AddFile(testpath, "pound£sign"); 
wdirectory_iterator iter(testpath);
TS_ASSERT_EQUALS(iter->leaf(),L"pound\xC2\xA3sign"); // Succeeds
TS_ASSERT_EQUALS(*iter, L"pound£sign"); // Fails

1 个答案:

答案 0 :(得分:2)

宽字符(wchar_t对象)的编码取决于实现。要使第二个语句(即L“磅符号”)起作用,您可能需要更改基础语言环境。默认值为“C”,它不知道英镑字符。十六进制值成功,因为这不需要将字形映射到特定编码中的值。

注意:为了简洁,我正在跳过标准w.r.t wchar_t,扩展字符集等的确切措辞。