如何一行行读TXT文件? 有人说用CStdioFile类实现,可是我的文本中间可能存在几个空行?那位高手能给出具体的实现代码!? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 CStdioFile fp; if(!(fp.Open((LPCTSTR)m_strFilePath,CFile::modeRead))) { AfxMessageBox("Open file failed!"); return; } CString strTemp; while(fp.ReadString(strTemp)) { m_strOriginal = m_strOriginal + "\r\n" + strTemp; } fp.Close(); char * str = new char[64];memset(str, 0, 64);FILE * fp = fopen("文件名", "a+"); if (fp) { while(TRUE) { fgets(str, 64, fp); memset(str, 0, 64); } fclose(fp); }最后str中的内容就是你从文件中得到的。 ifstream inFile("test.txt");string strLine;while(!inFile.eof()){ getline(inFile,strLine);} ifstream file( "text.txt" ); string line; vector<string> lines; while( getline( file, line ) ) { if( !line.empty() ) lines.push_back( line ); } file.open(strPath, CFile::modeRead);while(file.ReadString(strLine)){ strLine.TrimRight(); if(strLine == "") continue;} 如果你遇到 UNICODE 问题,http://blog.csdn.net/DavidHsing/archive/2008/11/17/3317841.aspx对于你遇到的读取问题,1 楼 ReadString 正解。 //打开原始文本void CAnalysisDlg::OnBtnOpenFile() { // TODO: Add your control notification handler code here CFileDialog* m_pFileDlg; m_pFileDlg = new CFileDialog(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "All Files (*.*)|*.*", this); if(m_pFileDlg == NULL) return; if(m_pFileDlg->DoModal() == IDOK) { m_strFilePath = m_pFileDlg->GetPathName();//原始文件路径 UpdateData(false); } CStdioFile fp; if(!(fp.Open((LPCTSTR)m_strFilePath,CFile::modeRead))) { AfxMessageBox("Open file failed!"); return; } CString strTemp; while(fp.ReadString(strTemp)) { m_strOriginal = m_strOriginal + "\r\n" + strTemp; // AfxMessageBox(strTemp); } fp.Close(); UpdateData(false);} 我把前面能读取的部分增加了其他数据上可以读取的!但是每次读到如下第一行后就不能读取了!应该初步可以确定在这行结束的时候被误判断所有当读完了!//000101F0 07 00 00 05 6A 00 01 00 B0 50 10 09 03 09 00 1A ....j....P.....//00010200 08 00 00 02 BC 52 14 00 A2 54 16 22 10 08 00 AA .....R...T.".... CStdioFile File;if (!File.Open("C:\\TestReport.txt",CFile::modeRead)) {MessageBox("File no open");return; }while(File.ReadString(s)){ // 字符串s里就是一行一行的内容。} 我就是这么实现的!可是遇到问题!我把前面能读取的部分增加了其他数据上可以读取的! 但是每次读到如下第一行后就不能读取了!应该初步可以确定在这行结束的时候被误判断所有当读完了! C/C++ code//000101F0 07 00 00 05 6A 00 01 00 B0 50 10 09 03 09 00 1A ....j....P.....//00010200 08 00 00 02 BC 52 14 00 A2 54 16 22 10 08 00 AA .....R...T.".... BMP图片亮度变暗的问题 自己写的浏览器作为默认浏览器后,双击htm文件,windows总报告找不到文件? 构造函数的问题 memcpy有点想不明白 新手问题:怎么用API调用一个已有的应用程序 男子跳水再夺一金,散分! 怎么判断一个已知句柄的菜单是否已经显示在屏幕上? 提一个很简单的问题:怎么把一个图标加入到工具栏里???? 为什么欢乐时光创建的对象,在运行中不提示“是否运行此控件”?它是怎么做到的? 怎么创建并显示浮动工具条? 关于键盘模拟 关于位图移动的问题
if(!(fp.Open((LPCTSTR)m_strFilePath,CFile::modeRead)))
{
AfxMessageBox("Open file failed!");
return;
}
CString strTemp;
while(fp.ReadString(strTemp))
{
m_strOriginal = m_strOriginal + "\r\n" + strTemp;
}
fp.Close();
memset(str, 0, 64);
FILE * fp = fopen("文件名", "a+");
if (fp)
{
while(TRUE)
{
fgets(str, 64, fp);
memset(str, 0, 64);
}
fclose(fp);
}
最后str中的内容就是你从文件中得到的。
while(!inFile.eof())
{
getline(inFile,strLine);
}
string line;
vector<string> lines;
while( getline( file, line ) )
{
if( !line.empty() )
lines.push_back( line );
}
while(file.ReadString(strLine))
{
strLine.TrimRight();
if(strLine == "")
continue;
}
http://blog.csdn.net/DavidHsing/archive/2008/11/17/3317841.aspx对于你遇到的读取问题,1 楼 ReadString 正解。
void CAnalysisDlg::OnBtnOpenFile()
{
// TODO: Add your control notification handler code here
CFileDialog* m_pFileDlg;
m_pFileDlg = new CFileDialog(TRUE, NULL, NULL,
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "All Files (*.*)|*.*", this); if(m_pFileDlg == NULL)
return; if(m_pFileDlg->DoModal() == IDOK)
{
m_strFilePath = m_pFileDlg->GetPathName();//原始文件路径
UpdateData(false);
} CStdioFile fp;
if(!(fp.Open((LPCTSTR)m_strFilePath,CFile::modeRead)))
{
AfxMessageBox("Open file failed!");
return;
}
CString strTemp;
while(fp.ReadString(strTemp))
{
m_strOriginal = m_strOriginal + "\r\n" + strTemp;
// AfxMessageBox(strTemp);
}
fp.Close();
UpdateData(false);
}
但是每次读到如下第一行后就不能读取了!应该初步可以确定在这行结束的时候被误判断所有当读完了!
//000101F0 07 00 00 05 6A 00 01 00 B0 50 10 09 03 09 00 1A ....j....P.....
//00010200 08 00 00 02 BC 52 14 00 A2 54 16 22 10 08 00 AA .....R...T."....
if (!File.Open("C:\\TestReport.txt",CFile::modeRead))
{
MessageBox("File no open");
return;
}
while(File.ReadString(s))
{
// 字符串s里就是一行一行的内容。
}
我把前面能读取的部分增加了其他数据上可以读取的!
但是每次读到如下第一行后就不能读取了!应该初步可以确定在这行结束的时候被误判断所有当读完了! C/C++ code//000101F0 07 00 00 05 6A 00 01 00 B0 50 10 09 03 09 00 1A ....j....P.....
//00010200 08 00 00 02 BC 52 14 00 A2 54 16 22 10 08 00 AA .....R...T."....