2016-05-31 14 views
1

visual C++で時間を得るにはGetLocalTime(&time)関数を使用しています。入力が高くなるたびに時間を節約する必要があります。別の構造では、保存された時間をさらに計算することができます。GetLocalTime時間を他の構造体に保存する方法

SYSTEMTIME time; 
if(input==high) 
{ 
    count++; //Incrementing a counter to count the number of times input is high 

    //Depending upon this count, I need to save value of time in a new variable 
    //using GetLocalTime to get current time 

    GetLocalTime(&time); 
} 

カウント値に応じて現在の時間を保存する方法。カウントが1の場合と同様に、入力が初めてハイであることを意味するので、a1に格納してください。 countが2の場合は、時間をa2に格納します。 countが5の場合、格納時間はa5になります。私はケースが固定されていないので、スイッチを使用することはできません、多くのカウントがある可能性があります。構造体に時間を節約するために使用できる他のロジック

+0

コンテナを使用しますか?例えば'array'、' vector'など – Rotem

+0

@Rotem countが1の場合は配列に時間を保存しましたが、countが2の場合は最初の値を上書きします。 ?あなたが何を言おうとしているのか分からなかったかもしれません。 –

+0

'count'を配列のインデックスとして使うのではなく、単に' vector :: push_back'を使うだけです。 – Rotem

答えて

3

時間値を保存するには、std::vectorなどのコンテナを使用する必要があります。

std::vector<SYSTEMTIME> savedTimes; 

SYSTEMTIME time; 
if (input == high) 
{ 
    //count++; //count is redundant now, you can later just check savedTimes.size() 
    GetLocalTime(&time); 
    savedTimes.push_back(time); //will add another value to the end of the vector. 
} 

保存された時間で何かを実行します。

for (auto it = savedTimes.begin(); it != savedTimes.end(); ++it) 
{ 
    SYSTEMTIME time = *it; 
    //whatever... 
} 

または

for (int i = 0; i < savedTimes.size(); i++) 
{ 
    SYSTEMTIME time = savedTimes[i]; 
    //whatever... 
} 
+0

それは素晴らしいです。しかし、どのような保存時間がどのカウント値であるかはどのように分かりますか?さらに私は時間の値を減算する必要があり、そのためにはファイルの時間に変換する必要があります。ベクトルを使用することは可能ですか? –

+0

@Andrewインデックスでベクトル値にアクセスすることができる例を追加したので、どの値がどのインデックスであるかを知ることができます。減算とファイル時間に関しては、元の質問やベクトルとは関係ありません。私はあなたがコンテナに複数の値を格納することに関係なく、これについて議論する新しい質問をすることをお勧めします。 – Rotem

+0

私は自分自身を試して、解決策を追加しました。それを見てください。 –

-1

私はSTRUCの配列を使用して問題を解決しました確かに。

struct foo 
{ 
    WORD Year; 
    WORD Month; 
    WORD DayOfWeek; 
    WORD Day; 
    WORD Hour; 
    WORD Minute; 
    WORD Second; 
    WORD Milliseconds; 
}; 

struct foo Foo[20] 

今入力がハイである時はいつでも:

if(input==high) 
{ 
count++; 
GetLocalTime(&time); 


//This will copy complete time in Foo[0]. 
//So next time input is high, time will get copied in Foo[1] and this will keep on going.. 
memcpy(&Foo[count],&time,sizeof(Foo)); 

} 

は、今私は構造Fooをクリアする方法を知りたいですか。?

+0

DownvotingはOKですが、自分のロジックで何をしたのかを理解できるようにコメントを追加してください。 –

関連する問題