假设我有一个包含日期月份值的字符串,例如(JAN,FEB,MAR,APR等)。如果我想强制字符串值“FEB”大于“JAN”,有没有办法做到这一点?我正在尝试排序日期,但目前有月值问题。我的日期是固定字符串,例如12NOV1990,11DEC1994等。
struct sortMapDaily: public std::binary_function <bool, std::string, std::string>
{
bool operator() (const std::string& lhs, const std::string& rhs)
{
enum month
{
JAN,
FEB,
MAR,
APR,
MAY,
JUN,
JUL,
AUG,
SEP,
OCT,
NOV,
DEC
};
if(lhs.substr(5,4) < rhs.substr(5,4))
{
return true;
}
else if (lhs.substr(5,4) == rhs.substr(5,4) && lhs.substr(2,3) < rhs.substr(2,3))
{
return true;
}
else if (lhs.substr(5,4) == rhs.substr(5,4) && lhs.substr(2,3) == rhs.substr(2,3) && lhs.substr(0,2) < rhs.substr(0,2))
{
return true;
}
else
{
return false;
}
}
};
答案 0 :(得分:2)
你需要将JAN,FEB映射到一些值,正如 zero298 enum
所建议的那样。
enum Months{JAN,FEB,MARCH};
cout<<JAN<<FEB<<MARCH;
输出:012
答案 1 :(得分:0)
你可以做的一种方法是创建一个类来存储日期,并重载运算符。
另一种方法是将其存储为数字(枚举),并在需要时将其转换为字符串。
您还可以编写一个接受两个字符串的函数,并返回“更大”的字符串。
std::string funct(std::string first, std::string second){
if(first == "DEC" || second == "DEC")
return "DEC";
if(first == "NOV" || second == "NOV")
return "NOV";
...
}