C++:从具有固定格式的字符串中挑选部分/数据

Posted

技术标签:

【中文标题】C++:从具有固定格式的字符串中挑选部分/数据【英文标题】:C++ : Pick portions/data from a string having fixed format 【发布时间】:2016-05-27 12:26:07 【问题描述】:

我有一个固定格式的字符串。比方说:

这是 2016 年 8 月24

那么,C++ 中是否有一种简单的方法(类似于 C 中的strtol),以便我可以将数据提取到如下变量中:

day = 24;
month = "Aug";
year = 2016;

【问题讨论】:

@NathanOliver,为什么是正则表达式?什么不是substr()? OP 提到它是一个string 并且有一个fixed format @BatCoder 哦,是的。已撤回评论。 【参考方案1】:

您可以通过std::stringstream 完成此操作。您可以将字符串加载到stringstream 中,然后将其读入所需的变量中。它将为您转换为您正在使用的数据类型。例如,您可以使用

std::string input = "This is 24 day of Aug of 2016";
std::stringstream ss(input)
std::string eater; // used to eat non needed input
std::string month;
int day, year;
ss >> eater >> eater >> day >> eater >> eater >> month >> eater >> year;

看起来有点冗长,但现在您不需要使用findsubstr 以及转换函数。

【讨论】:

@InsaneCoder 我试图让我的变量名有意义,而对我来说eater 只是用来消耗不需要的输入并且可以是各种垃圾箱的东西。谢谢。【参考方案2】:

您可以使用substr() 函数。

示例代码sn-p如下:

string str = "This is 24 day of Aug of 2016";

std::string day = str.substr (8,2);     //day = 24
std::string month = str.substr (18,3);  //month = Aug
std::string year = str.substr (25,4);   //year = 2016

substr()的第一个参数是子串的start position;而第二个参数指定该位置的number of characters to be read

【讨论】:

以上是关于C++:从具有固定格式的字符串中挑选部分/数据的主要内容,如果未能解决你的问题,请参考以下文章

Python从菜鸟到高手(15):字符串格式化

如何从具有由“|”分隔的字段的行中提取数据C++中的字符?

c++中字符串是如何分配内存的?

lucene

C++入门:第十一个程序

c++中如何从字符串2015-6-8取出年月日