C++:从具有固定格式的字符串中选取部分/数据
C++ : Pick portions/data from a string having fixed format
我有一个固定格式的字符串。比方说:
这是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;
它看起来有点冗长,但现在您不需要使用find
和substr
以及转换函数。
您可以使用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。