注册 登录
编程论坛 C++教室

如何判断是否读取到回车

墨清扬 发布于 2012-02-04 00:21, 4883 次点击
大家晚上好……有一个程序只需对输入的一行字符一个个进行独立判断,C的话用getchar()就好了,但是用C++的时候发现CIN似乎不接受回车符……搜索解决方法的时候很多人都建议将getline,然后处理数组或者定义一个流什么的,但是这样一行可能很长,要占用很多空间。有没有别的办法?
7 回复
#2
hahayezhe2012-02-04 08:35
C++用string + getline
#3
lucky5635912012-02-04 08:59
C++兼容C,也可以用。
#4
墨清扬2012-02-04 10:02
回复 2楼 hahayezhe
有时候没必要存储所有的字符,这样很浪费
#5
墨清扬2012-02-04 10:02
回复 3楼 lucky563591
那还要stdio.h?
#6
鹰派程序员2012-02-04 10:03
你好,C++兼容c,你可以用getline来实现
#7
pangding2012-02-04 10:19
可以用 cin.get()。不过一般还是用 getline() 的多,也方便一点。

如果你怕费内存,可以给第二个参数,限制它读的字符数。
这样,如果读到了换行符,或者把缓冲读满了,或者读到了文件结束符之类的,函数会有不同的表现。可以之后测试。
任何情况下,库函数都会保证在字符串结尾添加 '\0'。
比如:
程序代码:
#include <iostream>
using namespace std;

int
main (int argc, char *argv[])
{
    char a[5];

    cin.getline(a, 5);        // input 123456789
    cout << a << endl;        // output 1234
    cout << cin.gcount() << endl;    // 4
    cout << cin.fail() << endl;      // 1

    cin.clear();
    cin.sync();

    cin.getline(a, 5);        // input 123
    cout << a << endl;        // output 123
    cout << cin.gcount() << endl;    // 4
    cout << cin.fail() << endl;      // 0

    return 0;
}
#8
墨清扬2012-02-04 21:05
谢谢各位
1