关于回车的一个问题
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
int main(){
ifstream in("more.cpp");
string line;
char cmd;
while(getline(in,line)){
cout << line << endl;
while(cin>>cmd);
}
return 0;
}
一次显示文件一行,等待用户输入回车后显示下一行
上面的代码无法正常工作
while(cin>>cmd);
在输入回车后跳不出循环
问题点数:10、回复次数:15Top
1 楼cunsh(村少)回复于 2006-03-04 00:51:39 得分 0
while(getline(in,line)){
cout << line << endl;
cin.get();
}Top
2 楼Slime_wu()回复于 2006-03-04 12:31:23 得分 0
解决了,3x
能告诉我
while(cin>>cmd);
为什么不行么Top
3 楼Slime_wu()回复于 2006-03-04 12:35:57 得分 0
还是不行,我要是一次输入n个空格+Enter
就一次输出了n+1行的文本
并不是我想要的效果Top
4 楼Slime_wu()回复于 2006-03-04 12:46:17 得分 0
while(cin>>cmd);
在输入是回车时是不是认为没有输入?Top
5 楼rabbit729(无名胜有名)回复于 2006-03-04 12:57:21 得分 0
cunsh(村少)顶!!!!Top
6 楼zzw820626(偶要分,偶要星星)回复于 2006-03-04 12:58:36 得分 0
template<class Elem, class Tr>
basic_istream<Elem, Tr>& operator>>(
basic_istream<Elem, Tr>& _Istr,
Elem& _Ch
);
cin>>cmd 执行以后返回cin,只要cin是好的,那么while(cin)始终为真就不返回了
Top
7 楼zzw820626(偶要分,偶要星星)回复于 2006-03-04 13:07:13 得分 3
char cnd[100];
while(getline(in,line)){
cout << line << endl;
cin.getline(cmd,100);
}
Top
8 楼Slime_wu()回复于 2006-03-04 13:09:40 得分 0
我觉得:
回车不是应该被>>当作分隔符来辨识么,当直接输入回车时
cin>>cmd;
这条语句会以为cin没有输入,所以返回假退出Top
9 楼Slime_wu()回复于 2006-03-04 13:25:38 得分 0
char cnd[100];
while(getline(in,line)){
cout << line << endl;
cin.getline(cmd,100);
}
这种方式行
其实我想实现一个类似于unix上more功能的东东
现在的情况会接受输入
c++里如何处理键盘检测
通过检测按下"Enter"来做处理
谢谢指点Top
10 楼S_G_D(紫色)回复于 2006-03-04 13:33:39 得分 0
if verily couldn't,I advice to use the function "getchar" in C language.Top
11 楼shaoboailinglijun(邵波爱凌丽君)回复于 2006-03-04 14:12:35 得分 0
Ctrl+Z就可以Top
12 楼hyigle_love(parker)回复于 2006-03-04 14:32:32 得分 2
while(getline(in,line))
{
cout << line << endl;
while(cin.get()!='\n')
continue;
cin.get();//忽略回车符
}
Top
13 楼wjd7623054(千古风流)回复于 2006-03-05 12:50:05 得分 2
while(getline(in,line))
{
cout << line << endl;
while(cin.get()=='\n'){}
}
Top
14 楼dx30611(想要clean code)回复于 2006-03-05 14:45:26 得分 3
cin在接受字符时忽略掉回车,空格,水平制表符
get接受每一个字符Top
15 楼luvybird()回复于 2006-03-06 00:51:25 得分 0
支持dx30611Top




