我有一个文本文件,我geline到一个字符串。该文件如下:0.2abc 0.2 .2abc .2 abc.2abc abc.2 abc0.20 .2 . 20
我想检查结果,然后将其解析为单独浮动。结果是:0.2 0.2abc 2 20 2abc abc0.20 abc
这是有效的:检查是否有2位数(在'。'(完全停止)之前和之后)是否有char。如果只有1个网站的'。'是数字'。'将是句号。
如何解析STRING以分离结果?我确实用iterator来检查'。'和它的位置,但仍然卡住了。
答案 0 :(得分:1)
您需要做的第一件事是用文字分割输入。容易,只是不要使用.getline() 但是依赖于'while(cin>> strWord){/ *用词* /}来做事;
第二件事是提前输出错误的输入词:2个字符或更少的字,有多个.
,或.
的第一个或最后一个字。
您现在知道.
位于中间位置。 find()会给你一个迭代器。 ++和 - 为您提供下一个和以前的迭代器。 *为您提供迭代器指向的字符。 isdigit()告诉您该字符是否为数字。添加成分,你就完成了。
答案 1 :(得分:1)
看起来像上面一些相当复杂的建议 - 并不一定有帮助。
您的问题并没有完全清楚最终结果应该是什么样子。你想要一个浮点数的数组吗?你想要总和吗?你想打印出结果吗?
如果您需要家庭作业的帮助,最好的政策是发布您自己的尝试,然后其他人可以帮助您改进它,使其发挥作用。
一种可能有用的方法是尝试将字符串分解为子字符串(标记)并丢弃垃圾。
稍等一下,发布你可以做的事情。
答案 2 :(得分:0)
听起来你可以使用一些正则表达式来提取你的号码。
尝试使用此正则表达式以提取字符串中的浮点值。
[0-9]+\.[0-9]+
请记住,这不会提取整数值。即234abc
我不知道是否有一种在c ++中使用正则表达式的内置方法,但我发现this库有一个快速谷歌搜索,允许你在c ++中使用正则表达式
答案 3 :(得分:0)
听起来你应该看看“口译员”设计模式。
或者您可以使用“状态”设计模式并手动完成。
网上应该有很多这两个例子。