В общем, есть код, который запрашивает у пользователя его имя (для этого создан класс Student с переменной name). Далее программа сначала меняет все буквы в имени на маленькие, а затем делает первую букву заглавной.
К примеру, вы вводите имя aleXANDEr, программа должна привести к виду Alexander. Код ниже:
Проблема заключается в том, что я делал это через функции, это проще, так как в проекте будет довольно много моментов, когда придется проделывать такие махинации со строками, если делать без функций, то можно сделать так:
...и это будет работать, но повторюсь, мне нужно через функции, а через них почему-то не работает, хотелось бы знать почему...
К примеру, вы вводите имя aleXANDEr, программа должна привести к виду Alexander. Код ниже:
Код:
#include <iostream>
#include <string>
#include <cctype>
#include <algorithm>
#include <windows.h>
using namespace std;
class Student
{
public:
string name;
};
void str_to_lower(string str)
{
transform(str.begin(), str.end(), str.begin(), tolower);
}
void small_letter_to_big(string str)
{
str[0] = toupper(str[0]);
}
int main()
{
setlocale(LC_ALL, "rus");
Student firstStudent;
cout << "Введите имя:" << endl;
getline(cin, firstStudent.name);
cout << "\nВаше имя до изменений: "<< firstStudent.name << endl;
str_to_lower(firstStudent.name);
small_letter_to_big(firstStudent.name);
cout << "\nВаше имя после изменений: " << firstStudent.name << endl;
}
Код:
transform(firstStudent.name.begin(), firstStudent.name.end(), firstStudent.name.begin(), tolower);
firstStudent.name[0] = toupper(firstStudent.name[0]);