gpt4 book ai didi

c++ - 从输入文件中获取字符串直到整数? C++

转载 作者:行者123 更新时间:2023-11-30 02:50:49 26 4
gpt4 key购买 nike

我的一个输入文件,看起来像这样:

Stroustrup, Bjarne  8   8   -1  -1  -1
Lovelace, Ada 1 60 14 43 -1
von Neumann, Jon 77 48 65 -1 -1
Wirth, Niklaus 51 59 -1 -1 -1
Wozniak, Steve 81 -1 -1 -1 -1
Babbage, Charles 31 92 -1 -1 -1
Hopper, Grace 76 -1 -1 -1 -1
Bird, Tweety -99 -99 -99 -99 -99
Sylvester 77 39 -1 -1 -1

我当前的程序使用流式传输数据

infile >> lastName >> firstName >> ...

不幸的是,这只适用于其他输入文件,因为每一行实际上都有姓氏和名字。在这里,由于第三行中的姓氏分为两部分,最后一行中只有名字,其余数据无法流式传输。有什么方法可以从行首抓取一个字符串,直到它达到一个整数?

最佳答案

在解析输入文件时,您几乎永远不会得到直接使用原始流来用值填充变量的解决方案。输入的格式可能不同,可能会出现错误...在这种情况下,更好的方法是逐行读取输入并分别处理每一行。在处理每一行时,您可以构建一个临时的 istringstream,您可以使用它从中读取单词并检查该单词是否可以转换为数字(如果 0 是无效值,使用 std::atoi ):

std::string line;
while (std::getline(infile,line))
{
if (line.empty()) continue;
std::istringstream is(line);
std::string word;
while (is >> word)
{
int val = std::atoi(word);
if (val)
{
// TODO: number
}
else
{
// word
}
}
}

或者您可以考虑使用 std::isdigit只检查单词的第一个字符是否是数字:

if (std::isdigit(word[0])) ...

关于c++ - 从输入文件中获取字符串直到整数? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20109941/

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