我想将24小时时间转换为12小时时间。
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;
但是,我不知道如何让meridiem从if else块中“逃脱”。它的范围太小了。如何在if-else块之外访问meridiem的值?
variable initialization within an if statement blocks的答案没有回答这个问题。
答案 0 :(得分:3)
您需要在if 之外声明meridiem
if块。在声明后,您还需要使用=
分配给meridiem
:
string meridiem; /*
^^^^^^^^^^^^^^^^ */
if (midHour <= 12)
{
midHour12 = midHour;
meridiem = "AM"; /*
^^^^^^^^^^^^^^^^ */
}
else
{
midHour12 -= 12;
meridiem = "PM"; /*
^^^^^^^^^^^^^^^^ */
}
否则变量将超出范围的结尾括号。
答案 1 :(得分: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”
答案 2 :(得分:2)
你必须在if-else块之前声明meridiem
因为在 {...} 中声明的变量只能在块内部看到。
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;
答案 3 :(得分:2)
c ++ 11 lambda回答只是为了好玩:
#include <string>
auto currentTime = [](int midHour)
{
return (midHour <= 12) ? std::to_string(midHour) + "AM" : std::to_string(midHour - 12) + "PM";
}
cout << currentTime(15);