使用分隔符“/”标记化字符串
tokenize string with delimiter "/"
大家好,我遇到了一个问题,因为我无法想出一个方法将字符串(它实际上是这种形式的日期 day/month/year)作为参数并将其标记为向量或数组。有人可以帮忙吗?我知道有很多关于此的主题,但我找不到任何不包含提升(我不想使用)的解决方案。
如果要解析日期,明显的起点是 std::get_time
:
struct tm t;
std::cin >> std::get_time(&t, "%d/%m/%Y");
这会将结果放入 struct tm
而不是矢量。这样你就可以访问一个月中的第几天(例如)作为 t.tm_mday
而不是试图记住 x[1]
是一天, x[2]
是年份(或其他)。
您还可以获得相当数量的其他例程,这些例程知道如何以这种格式操作 date/time 以及 mktime
,它们可以将其转换为 time_t
(对于其中提供了很多更有用的例程)。
给你。
#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
试试这个:
string parsed,input="03/12/2016";
stringstream input_stringstream(input);
vector<string> date;
if(getline(input_stringstream,parsed,'/'))
{
date.push_back(parsed);
}
这会解析每个由 /
分隔的日期字符,并将其放入向量中
大家好,我遇到了一个问题,因为我无法想出一个方法将字符串(它实际上是这种形式的日期 day/month/year)作为参数并将其标记为向量或数组。有人可以帮忙吗?我知道有很多关于此的主题,但我找不到任何不包含提升(我不想使用)的解决方案。
如果要解析日期,明显的起点是 std::get_time
:
struct tm t;
std::cin >> std::get_time(&t, "%d/%m/%Y");
这会将结果放入 struct tm
而不是矢量。这样你就可以访问一个月中的第几天(例如)作为 t.tm_mday
而不是试图记住 x[1]
是一天, x[2]
是年份(或其他)。
您还可以获得相当数量的其他例程,这些例程知道如何以这种格式操作 date/time 以及 mktime
,它们可以将其转换为 time_t
(对于其中提供了很多更有用的例程)。
给你。
#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
试试这个:
string parsed,input="03/12/2016";
stringstream input_stringstream(input);
vector<string> date;
if(getline(input_stringstream,parsed,'/'))
{
date.push_back(parsed);
}
这会解析每个由 /
分隔的日期字符,并将其放入向量中