首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从文本文件中读取数据而忽略其他

从文本文件中读取数据而忽略其他
EN

Stack Overflow用户
提问于 2014-01-31 04:45:25
回答 2查看 719关注 0票数 0

对于我的项目的一小部分,我应该使用cin从文本文件中提取数据,我的程序将根据命令行参数知道cin的位置。我的问题是如何提取这四条数据而忽略逗号。例如,.txt文件如下所示

代码语言:javascript
运行
复制
(1,2,3,.)
(2,1,3,#)
(3,1,0,.)

在这种情况下,我需要提取1,2,3和。第一行。然后移到第二行。当到达空白换行符时,我可以通过while循环退出getline()场景。

我知道我需要使用getline(),并且我能够通过使用getline()生成的字符串的.at()函数来提取数据。然而,当像1、2或3这样的坐标可能是两位数时,我感到困惑。当这种情况发生时,我以前的算法不起作用,所以我觉得我想得太多了,应该有一种更简单的方法来解析这些数据。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-31 05:19:48

一个简单的方法是使用斯堪夫,将从cin读取的字符串作为第一个参数传递给它。

代码语言:javascript
运行
复制
sscanf(s, "(%d,%d,%d,%c)", &a, &b, &c))

如果您想从头到尾解析字符串,只需将模式聚焦。

在这种情况下,模式是

代码语言:javascript
运行
复制
'(', number, ',', number, ',', number, ',', char, ')'

所以你可以定位这三个逗号,然后从它们之间提取三个数字。

一个更复杂的方法是regex。但是C++对此没有本机支持( Boost库支持)

票数 -1
EN

Stack Overflow用户

发布于 2015-12-09 04:47:17

您可以使用>>运算符来读取分隔符中的虚拟“char”变量。这假设您不关心第四个令牌,并且它总是一个字符:

代码语言:javascript
运行
复制
char ch;
while (ss >> ch)
{
    int a,b,c;
    ss >> a >> ch >> b >> ch >> c >> ch >> ch >> ch;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21472560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档