c++将strftime转换为string
C++, strftime to string
我做这个函数是为了以字符串的形式获得所需的时间信息。
string gettimeinfo()
{
tm * timeinfo;
time_t rawtime;
char timebuff[120] = {0};
time(&rawtime);
timeinfo = localtime(&rawtime);
strftime(timebuff, 120, "%d.%m.%Y. %H:%M:%S %x %W %I:%M %p %a %b %A %B %Zn", timeinfo);
return string(timebuff);
}
编译没有错误,并按预期工作。
但是当调试代码时:blocks/GCC程序停止在返回语句和调试警告出现:
In std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&) () ()
发生了什么,如何摆脱它?
编辑:整个错误是:
In std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, unsigned int, std::allocator<char> const&) () ()
#1 0x004013fe in gettimeinfo () at C:programi[connectcppgeneral.cpp:36
C:programi[connectcppgeneral.cpp:36:785:beg:0x4013fe
At C:programi[connectcppgeneral.cpp:36
In char* std::string::_S_construct<char const*>(char const*, char const*, std::allocator<char> const&, std::forward_iterator_tag) () ()
In std::string::_Rep::_S_create(unsigned int, unsigned int, std::allocator<char> const&) () ()
In operator new(unsigned int) () ()
首先,您应该至少检查strftime
的返回值。如果它返回0,你的缓冲区是无效的,你不应该尝试从它构造一个字符串。
new
中的错误通常意味着在执行此操作之前堆已损坏。如果你插入
std::string tmp("heap test");
例如,在返回语句之前的,并且以同样的方式失败,那么您肯定有一些先前的损坏(遗憾的是,反过来并不成立,因为这些事情通常不是确定的)。使用valgrind或其他堆检查器是更好的选择。
相关文章:
- 使用char类型将decimal转换为string,将string转换为decimal
- 将C++ std::string 转换为 UTF-16-LE 编码的字符串
- 如何将带有十六进制值的 std::string 转换为 std::vector<无符号字符>
- 无法从'const std::string [3]'转换为'std::string'
- 从 std::string 转换为 const 无符号整数
- C++ 模板函数无法将"std:string"转换为"double"作为回报
- 将 std::string 转换为 const char* 用于 printf 消耗
- 将 std::string 转换为 const tchar*
- 如何在PHPCPP库中将C++map<string,map<string>>转换为php::value?
- 将 std::string 转换为具有特殊字符的 FString (TCHAR / wstring)
- 将 std::string 转换为 wchar_t* 的类型定义
- 在 C++03 中将 std::string 转换为 int
- 将 'hana::string' 转换为 'constexpr const char (&)[]'
- 正确的交叉平台从 std::string 转换为 'const TCHAR *'
- 从矢量<string>转换为wchar_t**
- 将 std::vector<std::string> 转换为 const char* const*
- 将 std::string 转换为 boost::asio::streambuf
- C++ SNAP 库将 std::string 转换为 TStr
- 自动将 std::string 转换为 char* 而无需每次都调用 c_str() 的最佳方法
- 将 std::string 转换为 Swift String