2016-12-09 5 views
-1

C++でどうすればいいですか?C++で時間hh:mmを追加する

例:

time1 = 04:45; 
time2 = 02:25; 
result = time1 + time2; 
result = 07:10 

た日付タイプでは(文字列、ダブルなど)の値を保存する時間でしょうか?

編集: このコードから可能ですか?int h = 23int m = 14?つまり、%Hと%Mを出力する方法は?

int main() 
{ 
    std::tm t = {}; 
    std::istringstream ss("23:12"); 
    ss >> std::get_time(&t, "%H:%M"); 
    if (ss.fail()) { 
     std::cout << "Parse failed\n"; 
    } else { 
     std::cout << std::put_time(&t, "%R") << '\n'; 
    } 
} 
+3

ここではコードを書くつもりはありません。何を試しましたか?あなたの作品を見せてください!次に*具体的な質問をしてください。 –

+1

ここで解析する:http://en.cppreference.com/w/cpp/io/manip/get_time – Snps

+0

このような時間を「手で」どのように追加すると思いますか(より正確には、コンピュータ)、鉛筆と紙? –

答えて

2

<chrono>標準C++ 11ヘッダーを参照してください。 this questionも参照してください。

あなたはいくつかの時間(実際には、time_point、またはclock、またはduration)に(かなり豊富なAPIを持っている、std::stringについて多くの詳細を読む)"04:25"文字列を変換し、その時に働くだろう。あなたの代わりに、時間関連の機能(でも古いC++またはプレーンなCで)使用することがありますPOSIXシステム(特にLinux)のオン

time(7)を...読む)などstrftime(3)strptime(3)は(もlocaltime(3) & timelocal(3)を参照してください。.. 。)

また、あなたは、単に"04:45"04としてparsedなければならないことを洞察して(10進数で、変換することstd::stoiを使用し、あるいはCのstrtol機能またはそのsscanf* 60 + 45"07:10"7*60 +10ことで、分を計算するかもしれません430;逆変換が10

を与える430/60(7を与える)と430%60は((... GCCを使用している場合などg++ -Wall -Wextra -gでコンパイル)コンパイルするときに、すべての警告に&デバッグ情報を有効にするために忘れて、デバッガを使用しないでください考える作りますプログラムの動作を理解する(例えば、ステップバイステップで実行し、その状態を問い合わせるなど)。

あなたの質問は非常に基本的です(そして、C++とは無関係な、基本プログラミングと数学ではいくつかの困難があります)。高校レベルでは、quotientmodulusbases & radixesを説明しています)、SICP(プログラミングの優れた紹介、C++を使用しないでください)、Programming using C++を読んで日を過ごすことを強くお勧めします。 C++についてをお読みください。

0

(OPに代わって掲載された解決策)

私の仕事 - それは動作します! 2つの戻り値を追加し、私は数分で結果を持っているよりも、2回、この機能を二回リンク

int convert_time_to_minutes(string sss) 
{ 

    istringstream ss(sss); 
    string hh,mm; 
    getline(ss, hh,':'); 
    getline(ss, mm,';'); 


    double h,m; //hours, minutes 
    h = atoi(hh.c_str()); 
    m = atoi(mm.c_str()); 
    double minutes = (h *60 + m)/60; 
    cout << minutes; 
    return minutes; 

} 

使用(のSNPのリンクや友人の助けに触発)。

関連する問題