c++ 创建std::wstring

flseospp  于 2023-06-07  发布在  其他
关注(0)|答案(2)|浏览(225)

我正在寻找去到的方式来创建一个格式化(MySQL DATETIME兼容,即)std::wstringstd::time_t。我现在要做的是从std::stringstream创建一个std::stringstd::put_time,然后像这样将它转换为std::wstring
std::wstring foo(myStdString.begin(), myStdString.end())
但我觉得这样不太优雅。是否有一个既定的方法来做到这一点?也许是某种沿着使用宽字符的表单检索方法?

km0tfn4u

km0tfn4u1#

可以使用std::put_time()。请记住,字符类型是从'format'参数的类型推导出来的:

#include <iostream>
#include <iomanip>
#include <ctime>

int main()
{
    std::time_t t = std::time(nullptr);
    std::tm timestamp = *std::localtime(&t);
    static const wchar_t *format = L"It is %T.";
    std::wcout << std::put_time(&timestamp, format);
}

您可能希望写入std::wostringstream而不是std::wcout,但原理没有改变。

n9vozmp4

n9vozmp42#

如果您需要使用localtime_s

#include <time.h>
std::wstring GetDateTime()
{
    time_t rawtime;
    struct tm timeinfo;
    wchar_t buffer[20];

    time(&rawtime);
    localtime_s(&timeinfo, &rawtime);

    wcsftime(buffer, 20, L"%Y-%m-%d %H:%M:%S", &timeinfo);

    return buffer;
}

相关问题