使用分隔符"/"标记字符串
tokenize string with delimiter "/"
你好,我正面临一个问题,因为我不能想出一个方法,将一个字符串(它实际上是一个日期在这种形式日/月/年)作为参数,并标记它在一个矢量或数组。有人能帮帮忙吗?我知道有很多关于这个主题,但我找不到任何解决方案,不包括boost(我不想使用)。
如果要解析日期,明显的起始点是std::get_time
:
struct tm t;
std::cin >> std::get_time(&t, "%d/%m/%Y");
这将结果放入struct tm
而不是矢量。这样,您就可以访问一个月中的某一天(例如)作为t.tm_mday
,而不是试图记住x[1]
是天,x[2]
是年(或其他)。
您还可以获得相当数量的其他例程,它们知道如何以这种格式操作日期/时间,以及可以将其转换为time_t
的mktime
(为此提供了许多更有用的例程)。
试试这个:
string parsed,input="03/12/2016";
stringstream input_stringstream(input);
vector<string> date;
if(getline(input_stringstream,parsed,'/'))
{
date.push_back(parsed);
}
解析由/
分隔的每个日期字符,并将其放入向量
给你。
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
int main()
{
std::string s( "2016/8/2" );
std::istringstream is( s );
std::vector<std::string> v;
v.reserve( 3 );
for ( std::string s; std::getline( is, s, '/' ); )
v.push_back( s );
for ( const auto & s : v )
std::cout << s << ' ';
std::cout << std::endl;
return 0;
}
程序输出为
2016 8 2
相关文章:
- 使用 char 分隔符解析C++中的字符串,但将可重复的字符保留为每个解析的子字符串 (C++ STL) 中的分隔符
- 字符串开头的分隔符
- 尝试将 c 字符串数组与分隔符连接起来
- 根据新的行分隔符从字符串中删除子字符串
- 同一分隔符之间的多个子字符串
- 字符串流分隔符
- 使用正则表达式c++从单词和分隔符之间的字符串中提取所有子字符串
- C++获取两个分隔符之间的字符串并替换它
- 是否存在像C++中那样带有分隔符的C#原始字符串
- 如何从字符串开头到第二个分隔符中提取子字符串?
- 如何使用两个不同的分隔符拆分字符串
- 将子字符串提取到最后 n 个分隔符C++
- 基于 C++ 中的多个字符串分隔符拆分字符串
- 读取 iostream,直到找到字符串分隔符
- 带有字符串分隔符或两个字符的fstream
- 读取直到boost::asio::streambuf中的字符串分隔符
- 使用两个字符串分隔符选择文本文件的一部分
- C++std::ifstream读取字符串分隔符
- 使用多个字符串分隔符拆分字符串
- 使用字符串分隔符(标准C++)解析(拆分)C++中的字符串