构造函数,它接受字符串输入并创建int变量

时间:2018-12-22 16:40:10

标签: c++ c++11 parsing c++14

我正在创建一个类,我想创建一个构造函数,该构造函数将输入作为字符串以yyyy-mm-dd hh:nn:ss的形式出现(例如2017-11-15 12:14:54)。我想将年,月,日,小时,分钟和秒保存在单个变量中(最好是int类型)。也就是说,我想将字符串的前4个字符保存在一个变量中,将与mm对应的字符保存在另一个变量中,依此类推。我知道可以将字符串转换为int,但是我不知道如何转换特定字符在字符串中的一个变量。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

如果您知道字符串的格式正确,则可以使用字符串的substr成员函数:

string substr (size_t pos = 0, size_t len = npos) const;

第一个参数是您要包括的第一个字母的索引,第二个参数是返回的字符串的长度。结合C ++ 11中的stoi(),您可以执行以下操作:

int year = stoi(full_date.substr(0, 4));
int month = stoi(full_date.substr(6, 2));
//Etc

有关此成员函数的更多文档可以在这里找到: http://www.cplusplus.com/reference/string/string/substr/

答案 1 :(得分:-3)

新答案

我刚发现有关C ++函数std::get_time的信息。请参见https://stackoverflow.com/a/33542189/13422,但忽略extern "C"包装器部分,只是使它看起来像strptime

就像strptime为C ++包装的一样。您可能想直接使用std::get_time

旧答案

为此,您实际上不需要C ++函数。它们太难用了。

使用众所周知的POSIX strptime读取时间字符串,并使用strftime打印它们。

如果您确实想做自己的事情,请使用C sscanf,它非常适合读取像这样的格式正确的字符串。