用分隔符“/”标记字符串

时间:2016-09-02 15:44:26

标签: c++ c++11 tokenize

大家好我正面临一个问题,因为我无法想出一个方法,它会接受一个字符串(实际上这个形式是日/月/年的日期)作为参数并将其标记为向量或阵列。有人可以帮忙吗?我知道有很多关于此的主题,但我找不到任何不包括boost的解决方案(我不想使用)。

3 个答案:

答案 0 :(得分:6)

如果要解析日期,明显的起点是std::get_time

struct tm t;

std::cin >> std::get_time(&t, "%d/%m/%Y");

这会将结果放入struct tm而不是矢量。这样您就可以t.tm_mday访问该月的某一天,而不是试图记住x[1]是当天,x[2]是年份(或其他)。< / p>

您还可以获得相当多的其他例程,这些例程知道如何以这种格式操纵日期/时间,以及mktime,它可以将其转换为time_t(其中有相当多的例程)提供了更多有用的例程。)

答案 1 :(得分:1)

你在这里。

#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 

答案 2 :(得分:1)

试试这个:

string parsed,input="03/12/2016";
stringstream input_stringstream(input);
vector<string> date;
if(getline(input_stringstream,parsed,'/'))
{
     date.push_back(parsed);
}

这解析每个日期字符,由/分隔,并将其放入向量