Суть проблемы здесь:
string dayOfWeek(int day);
using namespace std;
using
после кода, который зависит от него, так что компилятор идет искать string
и не может найти его. Он не ищет std :: string, потому что пока еще не сказано.
Вы можете переместить using
вверх несколько строк, но по многим причинам, охватываемым в ответах на Why is "using namespace std" considered bad practice? и несколько не охвачены, вы, вероятно, лучше не положить
using namespace std;
в коде вообще. Префикс std::
явно, и вы можете избежать множества неприятных сюрпризов.
Я также рекомендую следовать примеру @ πάνταῥεῖ, где была помещена функция. Вперед декларирование, а затем объявление дает вам два места, чтобы изменить код и еще одно место, чтобы иметь ошибку. Объявление функции впереди, где она будет использоваться, означает, что вам нужно изменить только одно объявление.
Собираем все вместе с несколькими другими мелкими ухищрений:
#include <string>
#include <iostream>
std::string dayOfWeek(int day)
{
switch (day) // for stuff like this, I like a switch. I find it looks nicer.
{
case 0:
return "SUNDAY";
case 1:
return "MONDAY";
case 2:
return "TUESDAY";
case 3:
return "WEDNESDAY";
case 4:
return "THURSDAY";
case 5:
return "FRIDAY";
case 6:
return "SATURDAY";
default:
return "No such day"; // functions must always return something.
// in this case what will cout print if you
// don't return a string? Don't know?
// Don't feel bad. Neither do I.
// Welcome to Undefined Behaviour
}
}
int main()
{
int day; //this was missing
std::cout << "Please enter a day of week (0 for Sunday, 1 for Monday, etc): ";
std::cin >> day;
std::cout << "The name of the day of the week is: " << dayOfWeek(day) << std::endl;
}
Там еще одна уловка, которую Вы можете использовать, чтобы избавиться от if
или switch
полностью
#include <string>
#include <iostream>
// define an array of days of the week to print. const means dayOfWeek cannot be changed
const std::string dayOfWeek[] =
{
"SUNDAY",
"MONDAY",
"TUESDAY",
"WEDNESDAY",
"THURSDAY",
"FRIDAY",
"SATURDAY"
};
int main()
{
unsigned int day;
//Note unsigned int. Negative numbers are now disallowed
std::cout << "Please enter a day of week (0 for Sunday, 1 for Monday, etc): ";
// keep looping until user provides a good number
while (!(std::cin >> day) // user MUST input a number
|| day > 6) // number is a usable number
{
std::cin.clear(); // clean up bad input
std::cout << "Please enter a day of week (0 for Sunday, 1 for Monday, etc): ";
}
// since we know day is a usable (0..6) number we can read the day out of the array
std::cout << "The name of the day of the week is: " << dayOfWeek[day] << std::endl;
}
Ваш код не является полным (у вас есть хотя бы несколько строк). Сообщите, пожалуйста, об ошибке/проблеме. – Xiobiq
Вам нужно разместить минимальный, полный и проверенный пример. http://stackoverflow.com/help/mcve – chema989
Это даже не компилируется ... –