对于以下代码,我想输入day并获得cout值。 目前,如果我输入0、1、2、3,它可以正确给出cout值 Exp结果:C ++程序要求一天并在一周中输出一天的标签。请告知如何解决。
from itertools import chain
my_list = [
'05-06-2015', '01-07-2015', '01-07-2015 01-07-2016', '26-08-2015',
'26-08-2016', '23-06-2015 26-08-2016 01-07-2015', '06-07-2015'
]
flat_list = list(chain(*[x.split() for x in my_list]))
print(flat_list)
答案 0 :(得分:0)
请注意:
每个 switch 动作均与整数常量的值相关联 表达式(即字符和整数常量的任意组合 得出一个恒定的整数值)。
从上一条语句中我们看到可以在enum
内使用switch cases
值,因为enum
值被视为数字。
因此,在您的情况下,无法让用户输入string
输入,然后在switch case
中检查该输入。在与switch case
一起使用输入之前,应将用户输入(无论它是什么)转换为整数常量表达式,以便可以在switch case
内部使用。
您也可以参考this,我认为这对您有所帮助。
答案 1 :(得分:0)
开关用于检查整数常量,因此您可以实际打开您拥有的枚举值,例如:
switch (day) {
case Mon: case Tue: case Wed: case Thu: case Fri:
cout << "Weekday"; break;
case Sun: case Sat:
cout << "Weekend"; break;
default:
cout << "??"; break;
}
cout << '\n';
但是,您无法按照期望的方式输入所输入的值,输入单词Tue
并将其神奇地转换为值2
。如果您具有以下代码:
int x = 42;
std::cin >> x;
,并且您输入一个非数字,例如Tue
,x
将不是是您可以使用的任何有用的值。就像您在评论中提到的那样,这几乎是几乎可以肯定的原因,无论您输入哪一天 text ,它都可以告诉您这是周末。他们 all 很有可能将x
设置为零(星期日),因为它们不能立即解释为整数。
可以进行的操作是提供一种为您完成转换的功能,类似于此完整程序中显示的功能:
#include <iostream>
#include <string>
#include <algorithm>
int getDayOfWeek(std::string textDay) {
// Only use up to three characters, and lower-case.
std::string day = textDay.substr(0,3);
std::transform(day.begin(), day.end(), day.begin(), ::tolower);
// Search through collection until found then return index.
int dayOfWeek = 0;
for (std::string chk: {"sun", "mon", "tue", "wed", "thu", "fri", "sat"}) {
if (day == chk) return dayOfWeek;
++dayOfWeek;
}
// Not found, return sentinel value.
return -1;
}
// Test harness to allow you to enter arbitrary lines and
// convert them to day indexes. Hit ENTER on its own to stop.
int main() {
std::string day;
std::cout << "Enter day: "; std::getline(std::cin, day);
while (!day.empty()) {
std::cout << day << " --> " << getDayOfWeek(day) << '\n';
std::cout << "Enter day: "; std::getline(std::cin, day);
}
return 0;
}
此功能的“实质”是getDayOfWeek()
函数,给定一个字符串,它可以告诉您该字符串代表星期几(如果有)。一旦将其作为整数,就可以在其上使用switch
语句,例如:
std::string getDayClass(std::string day) {
switch getDayOfWeek(day) {
case 0: case 6:
return "weekend";
case 1: case 2: case 3: case 4: case 5:
return "weekday";
}
return "unknown";
}
请记住,我已经使用 specific 规则将文本日期解码为整数,仅检查前三个字符,并以小写形式检查
因此,WEDDED BLISS
作为输入将认为它是星期三。显然,您可以根据情况使规则更具约束性。
答案 2 :(得分:-1)
您想要这样的东西:
int main()
{
string day;
cout << " Enter a day ";
cin >> day;
if (day == "Sun")
{
cout << "Weekend" << endl;
}
else if (day == "Mon")
{
cout << "Start of work week " << endl;
}
...
return 0;
}