c++按行读文件

tengye19840704 2008-09-16 08:44:35
如题....C++里按行读文件,,,一行里可能有空格,数字,字母等字符.
用哪个方法读好一点?
...全文
4566 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
chjiao3456 2011-05-23
  • 打赏
  • 举报
回复
用string类型的变量存取读入的字符串的真是高手阿,正在困惑这个问题呢!
zhuzhishan 2010-04-21
  • 打赏
  • 举报
回复
如果是用C的代码,怎么写呢?
chen08206416 2008-10-16
  • 打赏
  • 举报
回复
struct books
{
string BookName;
stirng BookId;
double price;
};
怎么用文件读和写?
chen08206416 2008-10-16
  • 打赏
  • 举报
回复
如果是 结构体怎么搞啊
WangLy_2008 2008-10-15
  • 打赏
  • 举报
回复
学习中.....
icelemon1314 2008-09-16
  • 打赏
  • 举报
回复
学习 学习中.........
fengyizi 2008-09-16
  • 打赏
  • 举报
回复
string line; 
ifstream infile("a.txt");
while(getline(infile,line))
{
cout<<line<<endl;
}
mengmeng4215 2008-09-16
  • 打赏
  • 举报
回复
学习学习
aaajj 2008-09-16
  • 打赏
  • 举报
回复
学习了
tengye19840704 2008-09-16
  • 打赏
  • 举报
回复
以下是.取出来字符串放到一个数组里..接下来..排个顺序,再写到一个新文件里,数组里没有.sort属性..怎么排啊?

string file_name;

ifstream infile("G:\\1.txt",ios::in);

string textline = "";
string aa[256] ;
int i = 0;
while(getline(infile,textline,'\n'))
{
i = i + 1;
aa[i] = textline;
cout<<textline<<endl;
}
cout<<i;
for(int j = 0; j<=i;j++)
{
cout<<aa[j]<<endl;
}

chenzhp 2008-09-16
  • 打赏
  • 举报
回复
#include<iostream>   
#include<fstream>
using namespace std;
int main()
{
ifstream infile;
char s[256];
fp.open("d:\\stu.txt");
if( fp == NULL )
{
cout<<"Can't open the file"<<endl;
exit(0);
}
while(1)
{

infile.getline(s,256); //这种调用,参数不同!
if( infile.eof())
break;
cout<<s<<endl;
}
return 0;
}
tengye19840704 2008-09-16
  • 打赏
  • 举报
回复
回12楼.高手历害..可以的.
下面是不是还应该加一个infile.close();把文件关闭了啊..
那上面那个问题,就是为什么与infile.getline(...)不一样呢?
chenzhp 2008-09-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 tengye19840704 的回复:]
还有一个问题,读文件一行一行读出来用for(...),怎么判断读到了文件的最后一行啊.
[/Quote]

string file_name;

ifstream infile(file_name.c_str(),ios::in);

string textline;

while(getline(infile,textline,'\n'))//遇到换行结束这一行的读取,只要不到文件最后,就一直读下去
xf_pan 2008-09-16
  • 打赏
  • 举报
回复

// open log file
ifstream input("E:\001.txt", ios::in);
if(input.good())
{
while(!input.fail()) //结束判断
{
char *cValue = new char[255];
input.getline(cValue,255);
}
}

tengye19840704 2008-09-16
  • 打赏
  • 举报
回复
还有一个问题,读文件一行一行读出来用for(...),怎么判断读到了文件的最后一行啊.
tengye19840704 2008-09-16
  • 打赏
  • 举报
回复
高人以下代码是可以的..可否解释一下.我刚才用的是infile.getline(...)为什么跟直接用getline不一样呢
[Quote=引用 7 楼 chenzhp 的回复:]
C/C++ codestring file_name;

ifstream infile(file_name.c_str(),ios::in);

string textline;

getline(infile,textline,'\n')//遇到换行结束这一行的读取
[/Quote]
tengye19840704 2008-09-16
  • 打赏
  • 举报
回复
这个是什么流还是什么啊?小弟初学.不好意思..可否解释一下,下面这段输出出来是读出最后一行
[Quote=引用 5 楼 aayy 的回复:]
C/C++ code

char buf[255];
FILE* file = fopen("C:\\Documents and Settings\\Administrator\\桌面\\test.txt","rb");
while (fgets(buf,255,file))
{
int x = 1;
x*=1;
}
fclose(file);
[/Quote]
chenzhp 2008-09-16
  • 打赏
  • 举报
回复
string file_name;

ifstream infile(file_name.c_str(),ios::in);

string textline;

getline(infile,textline,'\n')//遇到换行结束这一行的读取
aayy 2008-09-16
  • 打赏
  • 举报
回复
fgets()
从流中读一行或指定个字符,原型是char *fgets(char *s, int n, FILE *stream);
从流中读取n-1个字符,除非读完一行,参数s是来接收字符串,如果成功则返回s的指针,否则返回NULL。
aayy 2008-09-16
  • 打赏
  • 举报
回复


char buf[255];
FILE* file = fopen("C:\\Documents and Settings\\Administrator\\桌面\\test.txt","rb");
while (fgets(buf,255,file))
{
int x = 1;
x*=1;
}
fclose(file);
加载更多回复(4)

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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