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