vc中关于读取文件中的字符串的问题

lena1220 2008-02-27 07:34:14
各位高手请帮帮忙,这个事情比较紧急,我的水平实在太差,不知道怎么解决。
我要完成的是将一个txt文件中的所有字符按行读取,并将每一行都放置在一个字符串中
字符串是CString类型的,文件也是CFlie类型的,文件中的所有字符我都存在了一个CString类型的缓冲区中

应该怎么做呢,多谢大家了
...全文
380 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuucyf 2008-02-28
  • 打赏
  • 举报
回复
如Mackz所说:

CStdioFile、CStringArray
wuzoujing 2008-02-28
  • 打赏
  • 举报
回复
采用向量存取每一行数据:
#include <vector>


vector<CString> vecstr;

CStdioFile file;
if(!file.Open("111.txt",CFile::modeRead))
{
AfxMessageBox("Open file error!");
return;
}
CString str1;
while(file.ReadString(str1))//CStdioFile逐行读取数据存入str1中
{
vecstr.push_back(str1);
}
Eleven 2008-02-28
  • 打赏
  • 举报
回复
将整个文件中的东西写入到CString中,再找分隔符\n,使用CString类中的Find(),Left(),Right()函数进行截取
feilinhe 2008-02-28
  • 打赏
  • 举报
回复
我做过类似的
这样读取.txt文件中的东西比较好一些
CStdioFile read;
if(!read.Open("xxx.txt",CFile::modeRead))
{
AfxMessageBox("Open file error!");
return;
}
CString str,str1;
str=str1="";
while(read.ReadString(str1))//CStdioFile是逐行读取数据的,并存入str1中
{
str+=str1;
}
这样.txt文件中的字符就全部放在了str中了
lena1220 2008-02-28
  • 打赏
  • 举报
回复
谢谢大家的建议
不过我还是想问,我写的下面这个循环可以完成这个功能吗?
length是整个缓冲区的大小,temp是char*类型的,初始时指向缓冲区的开始

while (j<length)
{
int l=0;
while ( temp[l]!='\n')
{

strcpy(mm_commond,temp,l-1);//将这一行的代码写一个字符串中去
l++;
}
j++;
}
aj3423 2008-02-27
  • 打赏
  • 举报
回复
vector <CSring> v;
CString line= 第1行;
v.push_back(line);

line= 第2行;
v.push_back(line);

for(int xx=0; xx< v.size(); xx++)
show(v.at(i));
菜牛 2008-02-27
  • 打赏
  • 举报
回复
CStdioFile、CStringArray
wdq0916 2008-02-27
  • 打赏
  • 举报
回复
//要读第N行

CStdioFile fTxt;

CString strLine;

.......................

fTxt.SeekToBegin(); //文件指针到头,每次读之前都要这么做

for(int i=0; i<N; i++)

fTxt.ReadString(strLine);
lena1220 2008-02-27
  • 打赏
  • 举报
回复
怎么用数组来弄呢?
djwangping 2008-02-27
  • 打赏
  • 举报
回复
用个数组来搞。。。
lena1220 2008-02-27
  • 打赏
  • 举报
回复
可是我已经用了CFile定义了文件类型,因为我要选择打开方式打开文件

链在一起就是把这些字符串的头指针都放在一个链表中
cnzdgs 2008-02-27
  • 打赏
  • 举报
回复
“链在一起”是怎么链法?
cnzdgs 2008-02-27
  • 打赏
  • 举报
回复
不用CFile类,用fopen以文本方式打开,然后循环执行fgets并构造CString。
对于已经读到CString中的情况,可以循环用Find查找"\r"或者"\r\n"(根据文件的写入格式),然后将Buffer中对应位置改成'\0',再构造新的CString。
lena1220 2008-02-27
  • 打赏
  • 举报
回复
谢谢
可是那个getline好像是把所有的字符都按行读,并且它放到了一个字符串中
我是想把每一行都放在不同的字符串中,并且最后把这些字符串链在一起

如何解决呢
  • 打赏
  • 举报
回复
标准库中有getline直接达到你的要求

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧