C++中如何读入多行数据?

C++中如何读入多行文本(以^Z结束输入)?几种基本的读入字符(串)的语句又有什么不同呢,比如scanf,gets,cin.get,getline,getchar还有就是... C++中如何读入多行文本(以^Z结束输入)?
几种基本的读入字符(串)的语句又有什么不同呢,比如scanf,gets,cin.get,getline,getchar
还有就是我尝试用cin.get读入多行文本,
#include <iostream>
using namespace std;

int main()
{
char ch;
while (cin.get(ch))
{
cout << ch;
}
return 0;
}
结果有两个问题:
1.改为fin.get的时候一切正常,但cin.get是逐行读入的,敲回车就会有反应,不明白为什么。
2.在一行开始输入^Z的话就能正常退出,但是在一行字符串后面输入^Z(如abd837^Z)就被无视了,这又是怎么回事?

最后还望高手们讲解一下while (cin.get(ch))的真值判断以及EOF的详细介绍,非常感谢。
展开
 我来答
Fire_PKC
推荐于2017-12-15 · TA获得超过289个赞
知道小有建树答主
回答量:136
采纳率:0%
帮助的人:59.4万
展开全部
scanf();函数自身是带返回值的,如果有读入的话会返回true.

你既然要文本多行读入可以这样写:
#include<fstream>
freopen("unname.txt","r",stdin); //input
freopen("unname_out.txt","w",stdout); //output

然后按一般的读入就可以了.

EOF一般用来判断文本结束, 不过C里自带检测的函数,可以这样使用:
while(!feof(stdin)){
...
} //其中stdin是标准文件输入指针, 见上.
jxnuzhangwen
推荐于2018-03-10 · 超过21用户采纳过TA的回答
知道答主
回答量:53
采纳率:0%
帮助的人:0
展开全部
while (cin.get(ch))的真值判断:
istream隐式转换成bool类型,如果istream读入成功,返回true,否则返回false.
EOF:
文件结束符,istream读入操作时遇到EOF时将istream::iostate设置为
istream::eofbit.
可以这样写:
while (cin >> ch, !cin.eof())
process(ch);
表示遇到文件结束符退出循环。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
BigTopbaby
推荐于2016-03-15 · 超过10用户采纳过TA的回答
知道答主
回答量:29
采纳率:0%
帮助的人:11.9万
展开全部
c++里面读取一行为getline(ifstream,string)

读多行就用WHILE
例如
while(getline(input,text))
{

}
在WHILE循环中text就是当前循环的那一行数据
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
爱问小圣
2015-11-13 · TA获得超过363个赞
知道小有建树答主
回答量:481
采纳率:40%
帮助的人:127万
展开全部
用多行循环,gets()能读入包括空格的的字符串,
cin.getline()也一样
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
暗窥六道
2015-11-24 · TA获得超过111个赞
知道答主
回答量:144
采纳率:0%
帮助的人:64.2万
展开全部
istream in;
string input;
while (readline(in, input)){
// do something...
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式