无论是用CFile、CStdioFile、fstream、FILE都行比如wstring ws = L"ABC的";
然后输出到文件要是这样:00000000h: 41 00 42 00 43 00 B5 C4 ; A.B.C.的
然后输出到文件要是这样:00000000h: 41 00 42 00 43 00 B5 C4 ; A.B.C.的
解决方案 »
- 在对话框中创建IE控件出现的问题
- CRichEditCtrl的怪问题
- 有没有 VC 和 JAVA 都能用的DES算法源代码,要满足用相同的KEY给其中一方加密,密文给另一方成功解密
- ADO之错误处理
- 高手帮忙,工具条问题
- 如何在对话框上用代码动态的加载并显示icon资源?(解决问题就结贴)
- 关于取像素颜色的问题,应该比较简单(UP者有分)
- 关于Icmpsendecho的用法?急急急急急急!!!!!!!!!!!!!!!!!
- 单步跟踪为啥不去调用OnInitialUpdate? 详情如下,请帮忙分析一下,谢谢
- CWebBrowser2引起的程序异常退出问题
- 请教各位关于VC 托盘气泡的问题
- 客户端多线程长连接如何接收数据。
std::ofstream fout("C:\\......\\fff.txt", std::ios::binary);
wchar_t * buff=L"ABC的"; fout.write((const char*)buff, 8);
fout.close(); 我这样的结果是41 00 42 00 43 00 87 76
CW2A cs(L"ABC找个地方很美");
fout.write(cs.m_psz,strlen(cs.m_psz));
std::ofstream fout("C:\\......\\fff.txt", std::ios::binary);
VB6没有这个对象,我是用 VS2008
不对哦哥们,这样的运行结果是:
00000000h: 41 42 43 D5 D2 B8 F6 B5 D8 B7 BD BA DC C3 C0 ; ABC找个地方很美
我希望是:
00000000h: 41 00 42 00 43 00 D5 D2 B8 F6 B5 D8 B7 BD BA DC ; A.B.C.找个地方很
00000010h: C3 C0 ; 美我就用你的代码,最后一行换成fout.close();
你看看这个http://www.programfan.com/blog/article.asp?id=31048
写成 41 00 42 00 43 00这样就对了
unicode本来就这样
不对哦哥们,这样的运行结果是:
00000000h: 41 42 43 D5 D2 B8 F6 B5 D8 B7 BD BA DC C3 C0 ; ABC找个地方很美
我希望是:
00000000h: 41 00 42 00 43 00 D5 D2 B8 F6 B5 D8 B7 BD BA DC ; A.B.C.找个地方很
00000010h: C3 C0 ; 美我就用你的代码,最后一行换成fout.close();
哇擦,我还以为你要写ansi编码,那你干嘛转换啊?直接存,不可以吗?
{
wstring ws = L"ABC找个地方很美";
try
{
CFile file(_T("E:\\11.txt"), CFile::modeCreate | CFile::modeWrite);
wchar_t ch = L'\0'; CString strLine(_T(""));
CString strData(_T(""));
CString strText(_T(";"));
CString strInfo(_T(""));
CString strTemp(_T(""));
int nIndex = 0;
int nCount = 0;
strLine.Format(_T("%08xh: "), 0);
for(size_t i = 0; i != ws.size(); ++i)
{
ch = ws.at(i);
strTemp.Format(_T("%02X %02X "), LOBYTE(ch), HIBYTE(ch));
strData += strTemp;
wchar_t szText[] = {ch, L'\0'};
strText += CString(szText);
if(0 == HIBYTE(ch))
{
strText += _T('.');
}
nCount += 2;
if(0 == nCount % 16)
{
strInfo.Format(_T("%s%s%s"), strLine, strData, strText);
file.Write(strInfo, _tcslen(strInfo) * sizeof(TCHAR)); strData.Empty();
strText.Empty();
strLine.Empty();
nCount = 0;
strText = _T(";");
strLine.Format(_T("\r\n%08xh: "), nIndex * 16);
++nIndex;
}
}
strInfo.Format(_T("%s%s%s"), strLine, strData, strText);
file.Write(strInfo, _tcslen(strInfo) * sizeof(TCHAR));
file.Close();
}
catch (CException* e)
{
e->ReportError();
e->Delete();
}
return 0;
}
不对哦哥们,这样的运行结果是:
00000000h: 41 42 43 D5 D2 B8 F6 B5 D8 B7 BD BA DC C3 C0 ; ABC找个地方很美
我希望是:
00000000h: 41 00 42 00 43 00 D5 D2 B8 F6 B5 D8 B7 BD BA DC ; A.B.C.找个地方很
00000010h: C3 C0 ; 美我就用你的代码,最后一行换成fout.close();LZ你这个算是什么编码?ansi不是ansi Unicode又不是Unicode,两者混合?
西文用Unicode,中文用ansi?
#include <atlconv.h>
在函数起始地方
USES_CONVERSION;
你说的B5 C4是Ansi 的汉字"的"的编码 ,既然你用宽字符,那么就是这个样子,
如果出现41 00 42 00 43 00 B5 C4,那么相当于前面三个字符用unicode,后一个字符用ansi,不合理阿
FILE* fp = _wfopen(L"c:\\1.txt", L"wt,ccs=unicode");
fwprintf(fp, ws.c_str());
fclose(fp);这么简单的问题搞这么复杂。
非常感谢你的解答,我按你的代码修改了下就能用了,但是这段代码在工程属性是Unicode的时候是我想要的:
00000000h: 41 00 42 00 43 00 7E 62 2A 4E 30 57 B9 65 88 5F ; A.B.C.~b*N0W筫坃
00000010h: 8E 7F 84 76 ; ?剉
但是非Unicode下又变成了:
00000000h: 41 42 43 D5 D2 B8 F6 B5 D8 B7 BD BA DC C3 C0 B5 ; ABC找个地方很美?
00000010h: C4 ;
所以我想请问下,在工程建好之后,如何再把VC6和VS的工程属性分别改为Unicode?
我看18楼的哥们是在代码中改的,这个办法就不依赖工程属性了,能不能从设置中改或者加宏定义的办法?
1.你这样的写法是否默认会加一个文本文件头FF FE,这个可以不用去掉吧?貌似他不影响文件属性,只是增加了2字节的文件大小而已
2.VC下不管用,只输出前面的字母,没有输出汉字,且字母不是双字节的是不是也要把VC的工程环境设成Unicode先?请问如何设置