c++中txt的换行问题
#include<iostream>#include<fstream>#include<cstdlib>usingnamespacestd;voidcopy_line(i...
#include<iostream>
#include<fstream>
#include<cstdlib>
using namespace std;
void copy_line(istream& file);
int main()
{
ifstream fin("F:/data.txt");
if(!fin)
{
cout<<"file open failed"<<endl;
return -1;
}
copy_line(fin);
copy_line(cin);
return 0;
}
void copy_line(istream& file)
{
char ch;
do
{
file.get(ch);
cout<<ch;
}while(ch!='\n');
}
为什么程序执行的时候,不会终止? txt没有换行符吗?求解释,谢谢。 展开
#include<fstream>
#include<cstdlib>
using namespace std;
void copy_line(istream& file);
int main()
{
ifstream fin("F:/data.txt");
if(!fin)
{
cout<<"file open failed"<<endl;
return -1;
}
copy_line(fin);
copy_line(cin);
return 0;
}
void copy_line(istream& file)
{
char ch;
do
{
file.get(ch);
cout<<ch;
}while(ch!='\n');
}
为什么程序执行的时候,不会终止? txt没有换行符吗?求解释,谢谢。 展开
5个回答
展开全部
void copy_line(istream& file)
{
char ch;
do
{
file.get(ch);
cout<<ch;
}while(ch!='\n'&&file); //文本文件里面可能有换行符,有些可能没有,while(file)指文件没有结尾的话。。。,在C里面,相当于EOF(),也就说若读出的字符是换行符或者文件已结束,那么本函数结束。不知道这样说懂不?
}
{
char ch;
do
{
file.get(ch);
cout<<ch;
}while(ch!='\n'&&file); //文本文件里面可能有换行符,有些可能没有,while(file)指文件没有结尾的话。。。,在C里面,相当于EOF(),也就说若读出的字符是换行符或者文件已结束,那么本函数结束。不知道这样说懂不?
}
追问
需要输出一行数据,不是输出整个文本
追答
恩 能否试试 while(ch!='\n'&&file); 改成: while(ch!='\n' &&ch!='\13'&&file);
我没有编程环境试不了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-06-12
展开全部
txt文件里不一定有换行符,
void copy_line(istream& file)
函数很可能变成死循环,改成以下代码就不会了
void copy_line(istream& file)
{
char ch;
do
{
file.get(ch);
cout<<ch;
}while(ch!='\n'&&file); //这里有修改
}
void copy_line(istream& file)
函数很可能变成死循环,改成以下代码就不会了
void copy_line(istream& file)
{
char ch;
do
{
file.get(ch);
cout<<ch;
}while(ch!='\n'&&file); //这里有修改
}
追问
请问修改的地方是什么意思呢?能详细解释一下吗?我加50分
追答
while(file) 和你程序里用过的 if(!fin) 类似,都是对输入流进行判断
输入流 istream 对象有一个 成员fail,当fail =1时,表示流不能执行读入任务了,原因有流到了结尾(比如文件到了结尾)或者流当前的数据与目标格式不匹配等等,当fail =0时,表示流正常
if(!fin) 意思就是问输入流 fin 是否不能执行读入任务,相当于 if(fin.fail)
while(file) 的意思是问输入流是否正常,相当于while(!file.fail)
do{
......
}while(ch!='\n'&&file); 循环执行条件是输入流正常并且前一个字符不是'\n'
当文件到了结尾处file.fail=1,条件不成立,起退出循环作用
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
请问你是要输出一行的信息吗,加&&file是file.get(ch);读取到数值时返回1,而出错返回0,
追问
我只想输出一行数据,需要一行的终止符做判断条件
追答
终止判定可以就用这个ch!='\n'&&file
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你想对文件一行一行输出的话要用到getline(文件名,string变量)这个方法,就好了!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
New line,换行。
追问
..可是输出的是整个文件信息,而不是一行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询