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;
看起来有点冗长,但现在您不需要使用find
和substr
以及转换函数。
【讨论】:
@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++:从具有固定格式的字符串中挑选部分/数据的主要内容,如果未能解决你的问题,请参考以下文章