gpt4 book ai didi

c++ - 从标准输入解析参数的最快方法

转载 作者:行者123 更新时间:2023-11-28 03:20:06 25 4
gpt4 key购买 nike

假设您从标准输入中接收到格式如下的信息:

1 2 3 #3 John Tee #2
4 2 1 @1 Tree Bee #9

<int><int><int><char followed by int><string><string><char followed by int>

提取此信息以在程序中使用的最快方法是什么?此外,假设您想要检查第 4 个和第 7 个参数是否只包含一个“#”后跟一个数字(否则退出),或者您想要检查一行没有提前结束,如:

1 4 2 #4 John

如何在 C++ 中以最干净、最有效的方式做到这一点?

最佳答案

我最喜欢的基于行的重复解析方法是使用 std::getline 作为 while 循环的条件,然后解析其中的行:

std::string line;
while (std::getline(input_stream, line)) {
std::istringstream line_stream(line);
// Parse the line by extracting from line_stream
}

它确保您在开始解析之前有一整行。这样,如果单行解析出了问题,它仍然会转到下一行继续。

例如,我会检查以 # 开头的字段,如下所示:

int value;
if (line_stream.get() == '#' &&
line_stream >> value &&
std::isspace(line_stream.peek())) {
// Success
}

我的方法是始终让我的提取物处于某种状态。这意味着您会尽快发现格式问题。

关于c++ - 从标准输入解析参数的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15712501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com