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

C++ : Pick portions/data from a string having fixed format

本文关键字:字符串 选取部 数据 格式 定格 C++      更新时间:2023-10-16

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

这是242016年8月

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

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

您可以使用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以及转换函数。

您可以使用substr()函数。

示例代码片段如下:

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;而第二参数从该位置指定CCD_ 8。