vc++中 如何将CString的字符串写入TXT文件

vc++中 如何将CString的字符串写入TXT文件
打开这个txt文件还能正常显示这个字符串(我设定这个字符串是很复杂的包含各种数字字符字母等)而不是一些乱码,看不懂

本人初学者有高手愿意知道下吗?
假设这个 CString str ;
写入 1.txt
最好能写在简单的例子 谢谢!

提供一些基础知识:
现在我们一般使用的VC,工程属性中默认设置都是使用UNICODE字符集的。
当我们在.cpp里写代码时,所有的文本都是按UNICODE编译的。

问题就在这里,notepad.exe程序读.txt文件时,它首先要分析.txt文件首部,如果没有特殊情况,它是按照ansi标准打开显示.txt文件的文本内容。而我们写入.txt文件用的是UNICODE,因此程序完全正确的情况下,我们双击.txt文件,notepad.exe为我们打开了.txt,但里面的内容肯定是乱码(英文字母能看见,中文就是乱码)。

解决办法:
查看.txt文件时,先启动notepad.exe,然后从notepad.exe中来打开.txt文件,这个时候从打开对话框中,可以选择以什么方式打开,可以选择UNICODE,这样就没有乱码了。

3种高级编程方式:
1)把工程属性改了,选择ansi字符集。
2)不改变工程的UNICODE字符集方式,当写.txt文件时,将所有文本内容转换成ansi。
3)不改变工程的UNICODE字符集方式,也不转换文本。在新创建的.txt之后,往开始的2个字节中写入"0xFFEF"。这样notepad.exe会分析这两个字节,然后将后面的文本以UNICODE方式打开(即改变notepad.exe打开文本方式)

以上知识和MFC/win32几乎无关,但只会MFC/win32是不够的,实际编程需要有更多的知识做支撑,如了解notepad.exe等
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-22
很简单,用CStdioFile类:
CString str=_T("jmtgajdmj1253·天下JGJ");
CStdioFile File;
File.Open("D:\\1.txt",CFile::modeCreate|CFile::modeReadWrite);//如果文件事先不存在的话,就需要CFile::modeCreate,否则就不需要。
File.WriteString(str);
//把字符串写入文件中,前提是该文件事先存在
读取的语句是:
CString cs;
File.ReadString(cs);

差不多用到的就是这些函数,我是用手机回答的你的问题,就不多说了,自己在百度上搜一下CStdioFile类就知道了

参考资料:如果您的回答是从其他地方引用,请表明出处

本回答被提问者采纳
第2个回答  2009-10-08
CString str;
str.Format("heljrasjfdlsfsdljf");
FILE *fp;
fp = fopen("D:\\1.txt","a+");
fprintf(fp,"%s",str);
fclose(fp);
第3个回答  2009-10-07
#include<iostream.h>
#include<fstream.h>
void main()
{
char str[10];
for(int i=0;i<=9;i++)
{
cin>>str[i];
}
ofstream out;
out.open("1.txt",ios::out|ios::app);
for(i=0;i<=9;i++)

out<<str[i];
}
第4个回答  2009-10-08
需要用到文件操作的函数.
MFC中可以用CFile这个类.
C语言函数可以用fopen,fwrite,fread等.
你自己查一下用法.
相似回答