c++ - 如何跳过一行标准输入?
问题描述
我正在阅读标准输入,并希望在遇到以“a”开头的行时停止跳过所有内容:
while(cin.peek() != 'a') {
cin.get();
}
唯一的问题是,如果我在行的中间有一个 a,这也会触发。我会尝试cin.getline();
,但我不知道这条线的最大长度。有没有办法直接去下一行?
解决方案
你可以自己做,像这样:
#include <iostream>
#include <string>
int main() {
bool skip = true;
for(std::string line; std::getline(std::cin, line);)
{
if(line.size() && line[0] == 'a')
skip = false;
if(!skip)
std::cout << line<< std::endl;
}
return 0;
}
a
这将忽略读取的每一行,直到遇到以字符开头的非空行。之后,它将停止跳过读取的行,并打印每一行。
推荐阅读
- python - 事件日志中时间戳的数据转换
- c++ - 2个交替字符的最长子串
- aggregation-framework - 涉及 $in 的聚合管道
- android-layout - layout_scrollFlags = "snapMargins" 到底是做什么的?
- scala - 从 groupBy 关系数据集中有效地提取空值计数
- python - 如何在 Alexa 上混合 IntentRequest 和 LaunchRequest?
- go - “无效的递归类型”和“声明中的非法循环”
- android - 让挂起函数不返回任何东西
- swift - CLSTerminateHandler() 中的 iOS 崩溃
- javascript - 在 Typescript 中处理异步调用和返回的正确方法