gpt4 book ai didi

c++ - std::map 的 ofstream 输出产生地址而不是字符串

转载 作者:搜寻专家 更新时间:2023-10-31 01:09:57 26 4
gpt4 key购买 nike

我有一个 STL map 容器,里面装满了成对的 vcl UnicodeString 对象。我正在尝试使用下面引用的代码将其转储到文件中,但我得到的不是我的字符串,而是一个充满十六进制地址的文件。

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include <tchar.h>
#include <iostream>
#include <fstream>
#include <map>

//---------------------------------------------------------------------------
WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
{
std::map<UnicodeString, UnicodeString> fm;
fm[U"a"]=U"test";
fm[U"b"]=U"test2";
fm[U"c"]=U"test3";
fm[U"z"]=U"last one";
ofstream out("c:\\temp\\fm.txt");
std::map<UnicodeString, UnicodeString>::const_iterator itr;
for (itr = fm.begin(); itr != fm.end(); ++itr) {
out << itr->first.c_str()<< ",\t\t"<< itr->second.c_str()<<std::endl;
}

out.close();

return 0;
}

产生这个:

1f3b624,                1f5137c
1f3b654, 1f513bc
1f3b66c, 1f513fc
1f3b684, 1f258dc

我尝试了各种转换 c 字符串的方法,但似乎没有任何效果。

最佳答案

和往常一样,答案非常简单,@Dauphic 的评论引导我找到它。我正在使用“窄流”。解决方案是使用宽流,我惊讶地发现它存在!

解决方案是将流声明更改为:

std::wofstream out("c:\\temp\\fm.txt");

很快就变好了。

也找到了解决方案here

关于c++ - std::map<UnicodeString, UnicodeString> 的 ofstream 输出产生地址而不是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16468249/

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