1

Hello23:01:50に印刷するC++アプリを開発しました

これが私のコードです

#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 ++では、equals演算子 "=="は、charポインター(使用しているもの)に期待するとおりに機能しません。これは、実際にメモリ内のさまざまな場所を指しているポインタを比較しています。文字列を比較するには(これは、このチェックを行うための最良の方法ではありません)、文字列比較関数を使用する必要があります。

例えば:

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...") == 0c文字列をと比較することはできません。==

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