怎么读这样的文件 文件名 city.txt文件内容city1 192.168.2.3city2 192.168.2.6city1233 192.0.0.5city34 192.125.1.2.3///////////////////////////////////////怎么把它读入后放入 CStringArray m_CityName;CStringArray m_CityIp;然后我在listctrl中显示,相当于是数据库。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 BOOL CCityManger::ReadFile(){ int nFilesize; char *lpBuffer; char filename[10]; strcpy(filename,"city.txt"); //打开文件 if( !In.Open(filename, CFile::modeCreate|CFile::modeNoTruncate|CFile::modeRead) ) { AfxMessageBox( "不能打开文件 city.txt!" ); return FALSE; } //建立缓冲区 lpBuffer = new char [30]; if( lpBuffer == NULL ) { AfxMessageBox( "不能创建缓冲区!" ); return FALSE; } //得到文件状态 CFileStatus rStatus; In.GetStatus(filename, rStatus ); //得到文件大小 nFilesize = In.GetLength(); while( nFilesize > 0 ) { int nSize = 30; if( nSize > nFilesize ) nSize = nFilesize; try { In.Read( lpBuffer, nSize );//这里不知怎么处理 m_CityName= // m_CityIp= // } catch( CFileException *e ) { char *lpMsgBuf; if( FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, e->m_lOsError, MAKELANGID( LANG_NEUTRAL, SUBLANG_DEFAULT ), (LPSTR) &lpMsgBuf, 0, NULL ) > 0 ) { AfxMessageBox( lpMsgBuf ); LocalFree( lpMsgBuf ); } return FALSE ; } nFilesize -= nSize; }//end while delete [] lpBuffer; return TRUE;}谁能帮我改一下 使用CStdioFile,然后file.ReadString(str)读入每一行,再操作字符串就可以了 判断0x0d,0x0a(回车换行)\t 等应该可以了 to kingzai 有 CStdioFile 的完整例子没有, 帮助上只有,打开,读,至于,其他细节,一概没有(怎么知道有几行,怎么知道文件结束。) 我还没有写数据到该文件。我想是从listctrl中取数据到CStringArray m_CityName;CStringArray m_CityIp;然后 for( int i=0; i<m_CityName.GetSize(); i++ ){ CString cityname = m_CityName.GetAt( i ); CString cityip = m_CityIp.GetAt( i ); CString temp; temp=cityname +" "+cityip; ......//然后把temp 写到city.txt 中 //city.txt 中换一行。} //my example:CStdioFile Source_File; if (!Source_File.Open(strFile,CFile::modeReadWrite|CFile::shareDenyNone, &e)) { AfxMessageBox("不能打开该文件"); } // if(!Dest_File.Open(pApp->m_strUABPath+"\\Common\\Com.bmc",CFile::modeCreate|CFile::modeReadWrite))// AfxMessageBox("不能打开该文件"); else { nLength=Source_File.GetLength(); CString str; while(Source_File.ReadString(str)) { //读取一行字符串 str.TrimLeft(); str.TrimRight(); str+=" "; if(str.GetLength()!=0) { int n=str.Find(" ",1);//找到第一个空格,并把返回值赋给n Comm_Name=str.Left(n);//把空格以前的字符赋给Comm_Name Comm_Name.TrimLeft(); Comm_Name.TrimRight(); str.TrimLeft(); str.TrimRight(); str+="\n"; if(Comm_Name==strCommName) { if(strBmp!="") { pbuf=strCommName+" "+strBmp+"\n"; } // else // pbuf=strCommName+" "+pApp->m_strUABPath+"\\Bmp\\IDB_SMALL_DEFAULT_EVNT.bmp"+"\n"; } else pbuf=str; } else pbuf=str; Filebuf+=pbuf; //here add your code } Source_File.Close(); } 怎么中文就不行了武汉 192.168.2.3int n=str.Find(" ",1);//找到第一个空格,并把返回值赋给nComm_Name=str.Left(n);//它怎么就Find 找不到了 VC 打印原始报文 关于_beginthreadex()函数 有2个小问题 如何获取其他程序的数据? ADO 调用函数的方法 多网卡环境下建立socket的时候网卡的邦定问题 刚看programming windows,请教一个菜菜问题 关于#define的一个问题? 为什么会出现下面的错误? 收购能实现字符匹配的函数 各位有人看过电子工业出版社的vc教程啊? 我能不能这样子锁住鼠标于客户区里面? 连接远程服务器的疑惑?
BOOL CCityManger::ReadFile()
{
int nFilesize;
char *lpBuffer;
char filename[10];
strcpy(filename,"city.txt");
//打开文件
if( !In.Open(filename, CFile::modeCreate|CFile::modeNoTruncate|CFile::modeRead) )
{
AfxMessageBox( "不能打开文件 city.txt!" );
return FALSE;
}
//建立缓冲区
lpBuffer = new char [30];
if( lpBuffer == NULL )
{
AfxMessageBox( "不能创建缓冲区!" );
return FALSE;
}
//得到文件状态
CFileStatus rStatus;
In.GetStatus(filename, rStatus );
//得到文件大小
nFilesize = In.GetLength();
while( nFilesize > 0 )
{
int nSize = 30;
if( nSize > nFilesize )
nSize = nFilesize;
try
{
In.Read( lpBuffer, nSize );//这里不知怎么处理
m_CityName= //
m_CityIp= // }
catch( CFileException *e )
{
char *lpMsgBuf;
if( FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM,
NULL, e->m_lOsError,
MAKELANGID( LANG_NEUTRAL,
SUBLANG_DEFAULT ),
(LPSTR) &lpMsgBuf, 0, NULL ) > 0 )
{
AfxMessageBox( lpMsgBuf );
LocalFree( lpMsgBuf );
}
return FALSE ;
}
nFilesize -= nSize;
}//end while
delete [] lpBuffer;
return TRUE;
}谁能帮我改一下
\t 等应该可以了
有 CStdioFile 的完整例子没有, 帮助上只有,打开,读,至于,其他细节,一概没有(怎么知道有几行,怎么知道文件结束。)
从listctrl中取数据到CStringArray m_CityName;CStringArray m_CityIp;
然后
for( int i=0; i<m_CityName.GetSize(); i++ )
{
CString cityname = m_CityName.GetAt( i );
CString cityip = m_CityIp.GetAt( i );
CString temp;
temp=cityname +" "+cityip;
......//然后把temp 写到city.txt 中
//city.txt 中换一行。
}
CStdioFile Source_File;
if (!Source_File.Open(strFile,CFile::modeReadWrite|CFile::shareDenyNone, &e))
{
AfxMessageBox("不能打开该文件");
}
// if(!Dest_File.Open(pApp->m_strUABPath+"\\Common\\Com.bmc",CFile::modeCreate|CFile::modeReadWrite))
// AfxMessageBox("不能打开该文件");
else
{
nLength=Source_File.GetLength();
CString str;
while(Source_File.ReadString(str))
{
//读取一行字符串
str.TrimLeft();
str.TrimRight();
str+=" ";
if(str.GetLength()!=0)
{
int n=str.Find(" ",1);//找到第一个空格,并把返回值赋给n
Comm_Name=str.Left(n);//把空格以前的字符赋给Comm_Name
Comm_Name.TrimLeft();
Comm_Name.TrimRight();
str.TrimLeft();
str.TrimRight();
str+="\n";
if(Comm_Name==strCommName)
{
if(strBmp!="")
{
pbuf=strCommName+" "+strBmp+"\n";
}
// else
// pbuf=strCommName+" "+pApp->m_strUABPath+"\\Bmp\\IDB_SMALL_DEFAULT_EVNT.bmp"+"\n"; }
else
pbuf=str;
}
else
pbuf=str;
Filebuf+=pbuf;
//here add your code
} Source_File.Close();
}
武汉 192.168.2.3
int n=str.Find(" ",1);//找到第一个空格,并把返回值赋给n
Comm_Name=str.Left(n);//它怎么就Find 找不到了