如何使用put_time()设置日期格式以删除前面的空格和零
How can I format a date to remove preceding spaces and zeros using put_time()?
我的程序解析一个表示日期格式为YYYYMMDD的字符串,并以dayOfWeek、Month Day、Year的形式打印它。例如,给定字符串20131224
,程序应该打印Sunday, December 24, 2013
。
我写的程序就是这样做的:
#include <iostream>
#include <sstream>
#include <ctime>
#include <iomanip>
using namespace std;
int main() {
struct tm tm;
string s("20131224");
if (strptime(s.c_str(), "%Y%m%e", &tm)) {
cout << put_time(&tm, "%A, %B %e, %Y") << endl;
}
}
我的问题是,当给定一个日期在零之前的字符串时,比如20131204
,输出在月和日之间包含一个额外的空间,比如:Sunday, December 4, 2013
。
我知道,如果我使用%d
而不是%e
,那么这个空间将被替换为零,但这也不是我想要的。我知道删除%B
和%e
之间的空格将解决个位数日期的解决方案,但它不适用于两位数日期(因为它将打印Sunday, December24, 2013
)。我知道我可以使用某种正则表达式搜索来查找和替换双空格,但肯定有一个更简单的解决方案。
如何从put_time()
格式的日期中删除前面的空格和零
试试这个:
cout << put_time(&tm, tm.tm_mday < 10 ?
"%A, %B%e, %Y" :
"%A, %B %e, %Y" ) << endl;
相关文章:
- 将数组的地址分配给变量并删除
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- C/C++编译器通常会删除重复的库吗
- 从链接列表c++中删除一个项目
- C++如何通过用户输入删除列表元素
- 为什么在C++中使用私有复制构造函数与删除复制构造函数
- 是否需要删除包含对象的"pair"?
- 如何在自删除后将对象设置为nullptr
- 迭代时从向量和内存中删除对象
- 使用函数"remove"删除重复元素
- 如何从多映射中删除特定的重复项
- 运算符C++ "delete []"仅删除 2 个前值
- 删除指向指针的指针是运行时错误吗
- 将指针设置为"nullptr"并不能防止双重删除?
- 删除前面元素并将新元素添加到最小堆 (std::p riority_queue)
- 如何使用put_time()设置日期格式以删除前面的空格和零
- 如何在不删除任何字符的情况下将字符从字符串中的某个位置移动到其最前面
- 尝试实现一个函数以删除链表中的结构,同时将它前面的结构分配给它后面的结构
- 分配动态数组时,是否删除了前面的元素
- C++擦除/remove_if-仅从字符串的前面删除