hur.cn - 华软网

 热门搜索

如何用ReadString逐行读取txt中的多行数据?

  作者:未知    来源:网络    更新时间:2009/4/30
txt文件里的数据是如这样的:
100
100
100
100
114.12
126.78
136.51
142.86
144.8
142.12
135.48
125.03
每一行就是一个数据,并保存在一个数组里。我自己有尝试写,但不对。请大家用代码指导我一下。
---华软 网友回答---
把你写的贴上来
---华软网友回复---
try
{
CString strTemp;
BOOL bResult = TRUE;
while (bResult)
{
bResult = file.ReadString(strTemp);
if (bPushEmptyLine || !strTemp.IsEmpty())
{
vct.push_back(strTemp);
}
}

}
catch(CFileException* pe)
{
TRACE(_T("File could not be opened, cause = %d\n"),
pe->m_cause);
pe->Delete();
}
---华软网友回复---
说出你不对的问题
---华软网友回复---
CStdioFile f;
f.Open(pszFileName,CFile::modeRead|CFile::typeText);
CString str;
f.ReadString(str);
...
f.Close();
---华软网友回复---
CArchive用的比较多吧
---华软网友回复---
void CQTAView::OnImportdata() 
{
CString FilePath;
CStdioFile file;
CString str;
CStringArray StrAry; 
CFileDialog txtFile(TRUE,"*.txt",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, 
"Data Files (*.txt;*.dat)|*.txt; *.dat|All Files (*.*)|*.*||", NULL);
if (txtFile.DoModal()==IDOK)
{
FilePath=txtFile.GetPathName();
BOOL bOpen=file.Open(FilePath,CFile::modeRead);  //open measure_sample.txt 
if(bOpen)                                        //open success
{
while(file.ReadString(str))
{
CString StrTemp=buff;
StrTemp.TrimRight();
StrAry.Add(StrTemp);
}
}
}
}
我只读到第一行的,不知道如何控制其往下读。
---华软网友回复---
while(file.ReadString(str))
{
CString StrTemp = str.TrimRight();
StrAry.Add(StrTemp);
}

---华软网友回复---
C++">
while(file.ReadString(str)) 

   StrAry.Add(str.TrimRight()); 




---华软网友回复---
可是照楼上的这么改会报错cannot convert from 'void' to 'class CString'
---华软网友回复---
是错了,TrimRight() 没有返回值,想当然以为返回了自己:(

while(file.ReadString(str)) 

str.TrimRight(); 
StrAry.Add(str); 


---华软网友回复---
可是还是无法读下面一行的数啊,应该写个循环吗?
---华软网友回复---
这样看看,问题出在哪里?

C++">

while(file.ReadString(str)) 

str.TrimRight();
MessageBox(str); 
StrAry.Add(str); 



---华软网友回复---
好像是读进去了,我在test.txt里放了100 100 100
                               200 200 200
用上面的方法是先弹出一个MessageBox,100 100 100,点确定以后,
              再弹出一个MessageBox,200 200 200
那应该是对的,但请问,照我的想法,我是想把数存在StrAry里,那我怎么看里面的数是读取正确了呢?

---华软网友回复---
CStringArray 一样用循环读取
GetSize 获得元素个数
下标或者GetAt获得元素值

---华软网友回复---
while(file.ReadString(str)) 

CString StrTemp=buff; //buff我找了半天没找到.
StrTemp.TrimRight(); 
StrAry.Add(StrTemp); 


---华软网友回复---
可以这样看:

CString strRet;
for(int i = 0; i<StrAry.GetCount(); i++)
{
strRet+=StrAry[i];
}
MessageBox(strRet);//加到原代码的后面
---华软网友回复---
貌似美女.
---华软网友回复---
对,我上面的buff是一着急,写错了。
现在在大家的帮助下,解决了!非常感谢!
但我还有一个小小的问题,不是很明白:
while(file.ReadString(str))        //这不是只读一行吗?但为什么会把每一行的数据都读进来,放在str里?
{
str.TrimRight();
StrAry.Add(str); 
}
---华软网友回复---
这是个循环诶,当file.ReadString(str)返回false的时候说明已经读到尾了呀。StrAry.Add(str); 这句就是每次都把读到的str压入StrAry中,有什么好疑问的呢?
---华软网友回复---
因为我看到“CStdioFile类的ReadString()方法只能读文本文件的一行”,我才奇怪它是怎么读下去的。
---华软网友回复---
一行读完了,指针下移,读下一行
---华软网友回复---
那哪儿体现了它的指针呢?我就是不明白这儿。
---华软网友回复---
汗,内部的东西你要追根究底做什么?人家这个类里面就是这么设计的呀。
---华软网友回复---
不管怎么样,还是感谢大家。第一次用MFC做东西,有很多不明白的地方,多谢你们的指教。

---华软网友回复---
好东东。但当一行里面有好几个数据  怎么区别开来呢      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。