C++ 使用cin检查空行
我想检查是否有空行作为执行特定操作的输入。我尝试使用cin.peek()并检查它是否等于'\n',但没有意义 a b c 空行(此处,我要执行我的操作) a 我尝试过以下代码: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; }
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:不。如果空行是空的,你可以做任何你想做的事情。你甚至不需要排队。我只是展示了一个我相信的例子您的示例正在尝试这样做。我对代码意图的评估可能不准确。