与时俱进

时间:2013-01-18 19:36:25

标签: c++ visual-c++ time

我开发了一个C ++应用程序,可以在23:01:50打印Hello

这是我的代码

#include<iostream>
#include<string>
#include <time.h>
#include <windows.h>
using namespace std;
int main ()
{
    time_t start = time (&start);
    cout<<ctime(&start);
    while(1)
    {
        time (&start);
        if( ctime(&start) == "Fri Jan 18 23:01:50 2013\n" )
            cout << "Hello";
        Sleep(500);
        cout << ctime(&start);

    }
}

但输出是:

Fri Jan 18 23:01:49 2013
Fri Jan 18 23:01:49 2013
Fri Jan 18 23:01:50 2013
Fri Jan 18 23:01:50 2013
Fri Jan 18 23:01:51 2013
Fri Jan 18 23:01:51 2013

为什么不打印Hello

由于

2 个答案:

答案 0 :(得分:4)

在C ++中,equals运算符“==”不能像你期望的那样使用char指针(这就是你正在使用的)。它正在比较实际指向内存中不同位置的指针。要比较字符串(这不是检查BTW的最佳方法),您需要使用字符串比较函数。

例如:

if (strcmp(ctime(&start), "Fri Jan 18 23:01:50 2013\n") == 0)
{
}

有关详细信息,请参阅:http://www.cplusplus.com/reference/cstring/strcmp/

答案 1 :(得分:3)

==更改为strcmp(ctime(...), "Fri Jan 18...") == 0。您无法将c字符串与==进行比较,因为它会比较地址而不是值。

if( strcmp(ctime(&start), "Fri Jan 18 23:01:50 2013\n") == 0 )