gpt4 book ai didi

C++:文件、编码和数据类型

转载 作者:太空宇宙 更新时间:2023-11-04 12:23:55 26 4
gpt4 key购买 nike

<分区>

----请关闭----

-------- 编辑--------

我找到了问题所在。我要为真正的问题开始一个新问题....

------------------------


你好,

我的情况:

Linux (Ubuntu 10.04)
gcc

但它必须是平台无关的

我有一个文本文件 (UTF-8),其中包含特殊字符,例如 ¥ © ® Ỳ È Ð。我有一个 std::map ,我想在其中为键设置一个数据类型来保存这些特殊字符。目前我正在使用 wchar_t

然后我必须使用可以包含这些字符的字符串。现在我正在使用 std::wstring

我必须阅读那个 UTF-8 文件。所以,我想使用 wifstream。对于行处理,我使用了 wstringstream

我认为这还不错,到目前为止我所做的...如果不是,还有什么更好的?

出了什么问题:

当然,我必须阅读那个文件。但是阅读这些行会停在带有特殊字符的第一行。简而言之,这就是我所做的:

map<wchar_t, Glyph*> glyphs;

//...

wifstream in(txtFile.c_str());
if (!in.is_open())
{
throw runtime_error("Cannot open font text file!!");
}
wstring line;
while (getline(in, line)) // edit
{
printf("Loading glyph\n");
if (line.length() == 0)
{
continue;
}
wchar_t keyChar = line.at(0);
/* First, put the four floats into the wstringstream */
wstringstream ss(line.substr(2));
/* Now, read them out */
Glyph *g = new Glyph();
ss >> g->x;
ss >> g->y;
ss >> g->w;
ss >> g->h;
glyphs[keyChar] = g;
printf("Glyph `%c` (%d): %f, %f, %f, %f\n", keyChar, keyChar, g->x, g->y, g->w, g->h);

}

那么,问题是:如何使用 wifstream 读取带有特殊字符的文件?

提前致谢!

文件的外观:

  0.000000 0.000000 0.010909 0.200000
A 0.023636 0.000000 0.014545 0.200000
B 0.050909 0.000000 0.014545 0.200000
C 0.078182 0.000000 0.014545 0.200000
D 0.105455 0.000000 0.014545 0.200000
E 0.132727 0.000000 0.014545 0.200000

....

È 0.661818 0.400000 0.014545 0.200000
É 0.689091 0.400000 0.014545 0.200000
Ê 0.716364 0.400000 0.014545 0.200000
Ë 0.743636 0.400000 0.014545 0.200000
Ì 0.770909 0.400000 0.012727 0.200000
Í 0.796364 0.400000 0.012727 0.200000
Î 0.821818 0.400000 0.012727 0.200000
Ï 0.847273 0.400000 0.012727 0.200000
Ð 0.872727 0.400000 0.014545 0.200000
Ñ 0.900000 0.400000 0.014545 0.200000

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com