使用cin检查空行

时间:2013-04-14 00:35:34

标签: c++

我想检查一个空行作为执行特定操作的输入。我试图使用cin.peek()并检查它是否等于'\ n',但它没有意义。

  

     

B'/ P>      

C

空行(这里,我想执行我的行动)

  

a

我试过这段代码:

char a,b,c;
cin>>a;
cin>>b;
cin>>c;
if(cin.peek()=='\n') {
cout<<a<<endl;
cout<<b<<endl;
cout<<c<<endl;
}

1 个答案:

答案 0 :(得分:5)

使用getline,然后处理字符串。如果用户输入空行,则该字符串将为空。如果没有,您可以对字符串进行进一步处理。您甚至可以将其放在istringstream中,并将其视为来自cin

以下是一个例子:

std::queue<char> data_q;
while (true)
{
    std::string line;
    std::getline(std::cin, line);

    if (line.empty())    // line is empty, empty the queue to the console
    {
        while (!data_q.empty())
        {
            std::cout << data_q.front() << std::endl;
            data_q.pop();
        }
    }

    // push the characters into the queue
    std::istringstream iss(line);
    char ch;
    while (iss >> ch)
        data_q.push(ch);
}