一次读取一个字符串,直到行尾或文件结束

时间:2016-04-25 15:04:31

标签: c++ input char

所以,我需要从stdin char-by-char读取几行数字;也就是说,在每次读取字符后,我需要对它做一些事情,然后才能读取另一个字符;我还需要知道线路何时结束而另一条线路开始。这些数字是换行符号,我没有问题;但是在最后一个字符串之后没有\n,所以我在确定何时停止读取最后一行时遇到问题。我觉得自己真的很蠢,但谷歌搜索根本没有帮助我。我认为它应该是这样的:

char b;
for (size_t i = 0; i!= N; ++i) {
    while (some_mysterious_condition) {
        std::cin >> b;
        //so on
    }

我无法弄清楚我应该放在哪里。我尝试过使用std::cin.get(b),但它似乎忽略了换行符。

2 个答案:

答案 0 :(得分:0)

根据您的评论,您看起来需要阅读字符吗?

char b;
for (size_t i = 0; i!= N; ++i) {
    while (some_mysterious_condition && std::cin >> b) {

        //so on
    }

cin在遇到EOF(表示文件/流的结尾的字符)时会返回false。

答案 1 :(得分:0)

你能不能只检查最后一个char读取的值是否等于'\ 0'然后中断?

编辑:

那样的话:

char b;

for (;;) {
    for (;;)
    {
        b = std::cin.get();
        if ((b == '\0') || (b == '\n')) {
            //new line or end of file was found, skip handling that character
            break;
        }
         //do something with char b
    }

    if (b == '\0') break; //exit outer loop if end of file detected

}