+ -
当前位置:首页 → 问答吧 → MFC VS2008 往文件中写入字符串的问题

MFC VS2008 往文件中写入字符串的问题

时间:2011-11-25

来源:互联网

CString b;
b.Format(_T("TCE_V11"));  

FILE *a;
CString c;
c.Format(_T("E:\\a.txt"));

a = _tfopen(c, _T("w+"));
fprintf(a, "%s", b);
fclose(a); 

因为在VS2008中 需要_T() 但是写入文件中只有T
我改为char b[8]="TCE_V13"; 这样我知道是可以的
还请各位大侠们指点一下 为什么只输进去了T 要怎么改呢  
而不是像我那样直接就用字符数组了

作者: guxinxuelei   发布时间: 2011-11-25

既然都用了MFC了 那就没必要直接用API了,直接用CFile好了,下面代码应该没什么问题

C/C++ code

    CFile file;
    CString ctx;
    ctx.Format(_T("TCE_V11"));
    
    file.Open(_T("./test.txt"),CFile::modeCreate|CFile::modeWrite);
    file.SeekToBegin();
    file.Write(ctx,ctx.GetLength()*2);
    file.Flush();
    file.Close();

作者: kemee   发布时间: 2011-11-25

你工程应该是 Unicode 的吧,_T( ) 包住的字符串就成宽字节了, char b[8] 是ANSI的

作者: kemee   发布时间: 2011-11-25

恩,我的工程是Unicode 的
但是我想问 为什么就只输出一个 T 呢??

作者: guxinxuelei   发布时间: 2011-11-25

二进制文件和文本文件的问题,多典型啊...
你知道这些字符都以ASCII码形式存在内存中,所以会显示到你不如意。
你尝试这样分开
'T' 'C' 'E'....‘1’ ‘1’懂我意思么?不懂 搜 二进制文件和文本文件喔

作者: jordancar   发布时间: 2011-11-25

比如你把10存进去 出来的时候就是个换行 因为换行的ascii码就是10喽

作者: jordancar   发布时间: 2011-11-25

我想说楼主用什么API了,那不就是普通的string类么? 
引用 1 楼 kemee 的回复:

既然都用了MFC了 那就没必要直接用API了,直接用CFile好了,下面代码应该没什么问题

C/C++ code

CFile file;
CString ctx;
ctx.Format(_T("TCE_V11"));

file.Open(_T("./test.txt"),CFile::modeCreate|CFile::modeWrite);……

作者: jordancar   发布时间: 2011-11-25

引用 4 楼 jordancar 的回复:
二进制文件和文本文件的问题,多典型啊...
你知道这些字符都以ASCII码形式存在内存中,所以会显示到你不如意。
你尝试这样分开
'T' 'C' 'E'....‘1’ ‘1’懂我意思么?不懂 搜 二进制文件和文本文件喔

分开? 你说的那些我都懂啊 关键是Unicode

作者: guxinxuelei   发布时间: 2011-11-25

引用楼主 guxinxuelei 的回复:
CString b;
b.Format(_T("TCE_V11"));

FILE *a;
CString c;
c.Format(_T("E:\\a.txt"));

a = _tfopen(c, _T("w+"));
fprintf(a, "%s", b);
fclose(a);

因为在VS2008中 需要_T() 但是写入文件中只有T
我改为char b[8]……

fprintf(a, "%s", b); 改为fprintf(a, "%ws", b); 
宽字节

作者: wangweixu520   发布时间: 2011-11-25

其实你直接将CString b;改为一个char的也行

作者: wangweixu520   发布时间: 2011-11-25