有没有取得Unicode字符的getline函数? 我想从txt文本中输入一些汉字,然后写入另一个txt文本中,请问应该怎么做? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 CStdioFile 类,ReadString WriteString方法用Unicode #def UNICODE就行了 我这样写了,编译通过,也产生了一个two.txt但是运行时出错,two.txt也没有任何内容#pragma once#include <afxwin.h>#include <windows.h>#include <stdio.h>#include <afx.h>#ifndef UNICODE#define UNICODE#endifint WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iShowCmd){ TCHAR *fName = "one.txt"; CStdioFile infile; CStdioFile outfile; if( !(infile.Open(fName,CFile::modeRead))) { TCHAR buffer[50]; wvsprintf(buffer,TEXT("can not open %s !"),fName); MessageBox(NULL, buffer , TEXT("SORRY"), MB_OKCANCEL); return 0; } outfile.Open(TEXT("two.txt"),CFile::modeCreate | CFile::modeWrite |CFile::typeText); LPSTR container = TEXT("HELLO"); while(infile.ReadString(container,150)) { outfile.WriteString(container); //outfile.WriteString( } return 0;} 而且运行出错时还发布错误报告,我在while 的那一段加上了try catch也是这样 LPSTR container = TEXT("HELLO"); 常量指针 访问冲突吧。改用new分配给container内存,另外,既然你用了TEXT(""),那么便把LPSTR换成LPTSTR吧LPTSTR container = new TCHAR[151] 记得delete. 另外要学会单步调试啊,把错误定在某一行代码,而不是这么一大块让人看。 LPSTR container = TEXT("HELLO"); ----> TCHAR container[150]; //创建文件CStdioFile file;file.Open("ts.txt",CFile::modeCreate|CFile::modeWrite);//写入文件CString str;str.Format("%s\r\n","hello!I am talkingmute!");file.Seek(0,CFile::end);file.WriteString( str );//关闭文件file.Close();比如:读文件的例子CString strText = “”;CString szLine = “”;//打开文件CStdioFile file;file.Open("ts.txt",CFile::modeRead);//逐行读取字符串while( file.ReadString( szLine ) ){strText += szLine;}MessageBox(strText);//关闭文件file.Close();另外你的把CFile::modeCreate ¦ CFile::modeWrite ¦CFile::typeText中的 CFile::typeText去掉试试。 谢谢,我按你们说的去做,做好了,oakfire 在五楼的那一句对我太有用了 求救,工程在加入断点调试正常没有错误出现,如果去除断点,直接debug就会出现错误 socket通信量大时,怎么利用内存处理? 初学者问关于类文件.h的问题 语法问题 一个小问题 这个是什么问题?新手 请问,现在的网络编程主要作那些事情? 怎样对该控键(Microsoft FlexGrid Control)进行删除列和增加列的操作? 鼠标点击文件或文件夹如何获取文件名称和路径,分不够可以再加。 本人捣鼓的CChart最新版2.5.1.2版发布 大家来帮帮忙 各位高手,急啊, 在vs.net中如何在利用MFC建立的对话框中添加列表控件?是不是有个List Control或者其他?
ReadString
WriteString方法
用Unicode
#def UNICODE就行了
#pragma once
#include <afxwin.h>
#include <windows.h>
#include <stdio.h>
#include <afx.h>#ifndef UNICODE
#define UNICODE
#endifint WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iShowCmd)
{
TCHAR *fName = "one.txt";
CStdioFile infile;
CStdioFile outfile;
if( !(infile.Open(fName,CFile::modeRead)))
{
TCHAR buffer[50];
wvsprintf(buffer,TEXT("can not open %s !"),fName);
MessageBox(NULL, buffer , TEXT("SORRY"), MB_OKCANCEL);
return 0;
}
outfile.Open(TEXT("two.txt"),CFile::modeCreate | CFile::modeWrite |CFile::typeText); LPSTR container = TEXT("HELLO");
while(infile.ReadString(container,150))
{
outfile.WriteString(container);
//outfile.WriteString(
}
return 0;
}
改用new分配给container内存,另外,既然你用了TEXT(""),那么便把LPSTR换成LPTSTR吧LPTSTR container = new TCHAR[151]
LPSTR container = TEXT("HELLO"); ----> TCHAR container[150];
CStdioFile file;
file.Open("ts.txt",CFile::modeCreate|CFile::modeWrite);//写入文件CString str;
str.Format("%s\r\n","hello!I am talkingmute!");
file.Seek(0,CFile::end);
file.WriteString( str );//关闭文件file.Close();比如:读文件的例子CString strText = “”;
CString szLine = “”;//打开文件
CStdioFile file;
file.Open("ts.txt",CFile::modeRead);//逐行读取字符串
while( file.ReadString( szLine ) )
{
strText += szLine;
}MessageBox(strText);//关闭文件file.Close();另外
你的把CFile::modeCreate ¦ CFile::modeWrite ¦CFile::typeText
中的 CFile::typeText去掉试试。