1

I want to convert 24 hour time to 12 hour time.

int midHour = 15;
int midHour12 = midHour - 12;
if(midHour <= 12)
{
    midHour12 = midHour;
    string meridiem("AM");
}
else
{
    midHour12 = midHour - 12;
    string meridiem("PM");
}
cout << midHour12 << meridiem;

However, I have no idea how to get meridiem to 'escape' from the if else block. It's scope is too small. How can I access the value of meridiem outside the if-else block?

The answer at variable initialization within an if statement blocks does not answer the question.

4

4 に答える 4

3

if ブロックのmeridiem で宣言する必要があります。また、宣言後=に割り当てるために使用する必要があります。meridiem

string meridiem;                                                               /*
^^^^^^^^^^^^^^^^                                                               */

if (midHour <= 12)
{
    midHour12 = midHour;
    meridiem = "AM";                                                           /*
    ^^^^^^^^^^^^^^^^                                                           */
}
else
{
    midHour12 -= 12;
    meridiem = "PM";                                                           /*
    ^^^^^^^^^^^^^^^^                                                           */
}

そうしないと、変数は終了ブラケットによってスコープ外になります。

于 2013-06-13T17:18:09.640 に答える
2

楽しみのためだけにc ++ 11ラムダの答え:

#include <string>

 auto currentTime = [](int midHour)
 {
    return (midHour <= 12) ? std::to_string(midHour) + "AM" : std::to_string(midHour - 12) + "PM";
 }

 cout << currentTime(15);
于 2013-06-13T17:37:51.667 に答える
2

meridiem最初に宣言する必要があります:

   int midHour12;
    string meridiem;
    if(midHour <= 12)
    {
        midHour12 = midHour;
        meridiem = "AM";
    }
    else
    {
        midHour12 = midHour - 12;
        meridiem = "PM";
    }
    cout << meridiem;

または、後で必要ない場合meridiemは、単に印刷midHour12し、if-else で「AM」または「PM」を印刷します。

于 2013-06-13T17:18:11.827 に答える
2

{...}内で宣言された変数はブロック内からしか見ることができないmeridiemため、if-else ブロックの前に宣言する必要があります。

string meridiem;

int midHour = 15;
int midHour12 = midHour - 12;
if(midHour <= 12)
{
    midHour12 = midHour;
    meridiem = "AM";
}
else
{
    midHour12 = midHour - 12;
    meridiem = "PM";
}
cout << midHour12 << meridiem;
于 2013-06-13T17:20:04.167 に答える