1

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

这是我的代码

#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不打印?

谢谢

4

2 回答 2

4

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

例如:

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

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

于 2013-01-18T19:40:17.087 回答
3

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

if( strcmp(ctime(&start), "Fri Jan 18 23:01:50 2013\n") == 0 )
于 2013-01-18T19:38:15.717 回答