Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用cin检查空行_C++ - Fatal编程技术网

C++ 使用cin检查空行

C++ 使用cin检查空行,c++,C++,我想检查是否有空行作为执行特定操作的输入。我尝试使用cin.peek()并检查它是否等于'\n',但没有意义 a b 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; }

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

a

b

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;
}
字符a、b、c;
cin>>a;
cin>>b;
cin>>c;
如果(cin.peek()='\n'){

不能使用
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);
}
std::队列数据\u q;
while(true)
{
std::字符串行;
std::getline(std::cin,line);
如果(line.empty())//line为空,则将队列清空到控制台
{
而(!data_q.empty())
{
std::cout ch)
数据推送(ch);
}

使用
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);
}
std::队列数据\u q;
while(true)
{
std::字符串行;
std::getline(std::cin,line);
如果(line.empty())//line为空,则将队列清空到控制台
{
而(!data_q.empty())
{
std::cout ch)
数据推送(ch);
}

?@Xymostech,如果您要求使用getline,请检查其长度。我更喜欢使用“cin>>a”,因为我的输入将在一条直线中包含多个变量。您是否从文件中读取?如果您要求使用getline,请检查其长度。我更喜欢使用“cin>>a”因为我的输入将是一条直线中的多个变量,你是从文件中读取的吗?不,来自concur@stardust_,你能写一个简单的例子来进一步了解你,并说明如何从文件中提取我的输入吗string@AbdEl-RahmanEl Tamawy:我添加了一个与您所做的类似的示例。如果输入字符是空格怎么办''?此代码将跳过此空间还是将其作为输入?std::istringstream iss(行);char ch;while(iss>>ch)data_q.push(ch)@AbdEl RahmanEl Tamawy:它会跳过它,但是你可以很容易地修改它以满足你的愿望。如果你是这样要求的话,它不会将它视为空行。@AbdEl RahmanEl Tamawy:不。如果空行是空的,你可以做任何你想做的事情。你甚至不需要排队。我只是展示了一个我相信的例子d您的示例正试图这样做。我对您的代码意图的评估可能不准确。请您写一个简单的示例,以进一步了解您,并说明如何从string@AbdEl-RahmanEl Tamawy:我添加了一个与您所做的类似的示例。如果输入字符是空格“”,该怎么办s代码跳过此空格或将其作为输入?std::istringstream iss(line);char ch;while(iss>>ch)data_q.push(ch)@AbdEl RahmanEl Tamawy:它会跳过它,但是你可以很容易地修改它以满足你的愿望。如果你是这样要求的话,它不会将它视为空行。@AbdEl RahmanEl Tamawy:不。如果空行是空的,你可以做任何你想做的事情。你甚至不需要排队。我只是展示了一个我相信的例子您的示例正在尝试这样做。我对代码意图的评估可能不准确。