std :: cout在屏幕上显示十六进制而不是文本

时间:2013-08-07 09:01:29

标签: c++

我得到这样的系统时间:

time_t t = time(0); 
struct tm* now = localtime(&t);
TCHAR* tInfo = new TCHAR[256];
swprintf_s(tInfo
    , 256
    , _T("Current time: %i:%i:%i")
    , now->tm_hour
    , now->tm_min
    , now->tm_sec);

然后在屏幕上显示:

std::cout << tInfo << std::endl; 

当前时间:12:57:56 ,我在屏幕上显示: 0x001967a8 。我做错了什么?

3 个答案:

答案 0 :(得分:4)

您正在尝试打印“宽”字符串。你需要使用:

std::wcout << tInfo << std::endl;

“窄”版本cout不知道“宽”字符,所以只打印地址,就像你试图打印其他随机指针类型一样。

答案 1 :(得分:3)

尝试:

std::wcout << tInfo << std::endl; 

答案 2 :(得分:0)

C ++与C共享其日期/时间函数。tm structure可能是C ++程序员最容易使用的函数 - 以下打印今天的日期:

#include <ctime>
#include <iostream>
using namespace std;

int main() {
time_t t = time(0);   // get time now
struct tm * now = localtime( & t );
cout << (now->tm_year + 1900) << '-' 
     << (now->tm_mon + 1) << '-'
     <<  now->tm_mday
     << endl;
}