gpt4 book ai didi

c++ - 检查有效输入 C++

转载 作者:太空宇宙 更新时间:2023-11-04 16:18:05 25 4
gpt4 key购买 nike

这里是基本问题。我正在读取一个文件,并将文件中的值写入无符号整数,如下所示:

// The essential stuff
std::ifstream infile(filePath.c_str());

std::getline(infile, line);
std::istringstream in(line);

char type;
in >> type;

unsigned int x, y, z, w;
in >> x >> y >> z >> w; // My question relates to this here.

这里是问题所在:获取 x、y、z 和 w 值工作正常,除了我希望 w 是可选的。所以一行可能包含 f 0 1 2 3(类型,加上 4 个值),或者它可能只包含 f 0 1 2

天真地,我希望 w 等于 EOF 或类似的东西,但可惜,事实并非如此。

我可以计算行中的空格,并用它来检查 w 是否存在。或者我可以使用 peek 来检查该行是否在 z 之后结束,但这并不是那么简单,因为我也想忽略空格(即行与行之间可能有 10 个空格) z 和 w 字符,并且应该仍然有效)。所以解决方案肯定存在,但我想知道是否有...一些更简洁的方法?也许是这样的?

writeTo(w);
if w is junk
disposeOf(w);

最佳答案

分两步进行:

if (in >> x >> y >> z)
{
mandatory_stuff(x, y, z);
if (in >> w)
{
optional_stuff(w);
}
}
else
{
// malformed input
}

关于c++ - 检查有效输入 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20295496/

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