我开发了一个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
?
由于
答案 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 )