Итак, у меня есть следующий код:
void Start(int &year, string &mon, char &nyd)
{
printf("%s", mon);
int month= atoi(mon.c_str());
printf("%i", month);
}
Когда входящий параметр «03» (первый printf показывает 03), я получил 0 за месяц.
Однако, если я добавлю эту строку
mon = "03";
Я получил 3, что правильно, за месяц.
Зачем……????
РЕДАКТИРОВАТЬ: Я понял это. Вы, ребята, были правы. НЕ используйте scanf для ввода строки.
Вы не можете напечатать std :: string с %s
в функции printf попробуйте это:
void Start(int &year, const std::string &mon, char &nyd)
{
std::cout << mon << std::endl;
int month= atoi(mon.c_str());
std::cout << month << std::endl;
}
Или же
void Start(int &year, string &mon, char &nyd)
{
printf("%s\n", mon.c_str());
int month= atoi(mon.c_str());
printf("%i\n", month);
}
Но std :: cout предпочтительнее функции C printf.
Также не используйте scanf с std :: string, используйте std :: cin вместо scanf, std :: cout вместо printf.
Других решений пока нет …