当前位置:  开发笔记 > 编程语言 > 正文

从一行解析整数

如何解决《从一行解析整数》经验,为你挑选了1个好方法。

我正在解析输入文本文件.如果我使用getline()一次获取一行输入,有没有办法可以搜索字符串来获取整数?我在思考类似于Java中的getNextInt().

我知道输入线上必须有2个数字; 但是,这些值将由一个或多个空格字符分隔,因此我不能只是去一个特定的位置.



1> Martin York..:

有几件事需要考虑:
让我们假设你在每一行都有两个数字,然后是你不关心的文字.

while(inFile >> rows >> columns)
{
    // Successfully read rows and columns

    // Now remove the extra stuff on the line you do not want.
    inFile.ignore( std::numeric_limits::max(), '\n' );
}

另请注意,如果将整数值分开的唯一内容是"空格",那么您甚至不需要使用ignore()行.

上面的while()有效,因为:operator >>返回一个流对象(引用).因为流对象正在布尔上下文中使用,所以编译器将尝试将其转换为bool,并且流对象具有执行该转换的强制转换运算符(通过在流上调用good()).

需要注意的重要事项是不要使用该行

while(inFile.eof())

如果您确实使用了这个,那么您将陷入最后一行问题的陷阱.如果您已经读取了所有数据,则eof()仍然是假的(因为在您尝试阅读过去的EOF之前不是这样).因此文件中没有剩余数据,但您仍然可以进入循环体.在你的代码中,然后执行getline()并失败(不再有数据),现在设置了EOF.循环的其余部分将取决于inLine的定义方式和位置.

您可以使用上述测试.但是你必须愿意在使用它之后测试流是否正常.

while(inFile.eof())  // Should probably test good()
{
    getLine(inFile,inputline);
    if(inFile.eof()) // should probably test good()
    {
         break;
    }
}

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有