代码:
#include <fstream>
const wchar_t * testArray[] =
{
L"Wszystkie kategorie równoważne",
L"Oczekiwane przepływy pieniężne",
L"Risk i dojrzałość",
L"Pozycja strategiczna i lata na rynku",
L"Prawdopodobieństwo oszacowania"
};
void FaultyFunction(void)
{
std::wofstream file("test.txt");
for (int i = 0 ; i < 100 ; ++i)
{
for (int j = 0 ; j < 5 ; ++j)
{
file << testArray[j] << L'\t';
}
file << L'\n';
}
}
int main(void)
{
FaultyFunction();
return 0;
}
执行后的“test.txt”:
Wszystkie 类别 równowa
(是的,这就是整个文件!)
现在,我不知道这是std::wofstream
文件编码的问题还是什么,但结果至少很奇怪。但是当我删除波兰字母时:
const wchar_t * testArray[] =
{
L"Wszystkie kategorie rownowazne",
L"Oczekiwane przeplywy pieniezne",
L"Risk i dojrzalosc",
L"Pozycja strategiczna i lata na rynku",
L"Prawdopodobienstwo oszacowania"
};
文件内容符合预期:
Wszystkie kategorie rownowazne Oczekiwane przeplywy pieniezne Risk i dojrzalosc Pozycja strategiczna i lata na rynku Prawdopodobienstwo oszacowania Wszystkie kategorie
rownowazne Oczekiwane przeplywy pieniezne Risk i dojrzalosc Pozycja strategiczna i lata na rynku Prawdopodobienstwo oszacowania Wszystkie kategorie
rownowazne Oczekiwane przeplywy pieniezne Risk i dojrzalosc Pozycja strategiczna i lata na rynku Prawdopodobienstwo oszacowania
...(其余的 97 行都是这样)
当我使用相同的testArray
(带有波兰字符)在 *.xls 文件(使用 libxl 库)中写一些东西时,更加侮辱伤害,一切都很好。
怎么了?如何将波兰语字母保存在文本文件中?
编辑:
实际上,当我尝试使用std::string
和std::ofstream
(不宽)相同的代码时,它也可以正常工作(使用波兰字母)。那么宽字符有什么问题呢?