В C++ существует несколько способов сделать первую букву строки заглавной. Независимо от того, работаете ли вы над приложением для обработки текста или просто хотите отформатировать пользовательский ввод, возможность использовать заглавную первую букву строки может оказаться весьма полезной. В этой статье мы рассмотрим пять различных методов с примерами кода, которые помогут вам добиться этого в ваших программах на C++.
Метод 1: использование функции toupper()
Функция toupper() в библиотеке
#include <iostream>
#include <cctype>
std::string capitalizeFirstLetter(std::string str) {
if (!str.empty()) {
str[0] = std::toupper(str[0]);
}
return str;
}
int main() {
std::string input = "hello world";
std::cout << capitalizeFirstLetter(input) << std::endl;
return 0;
}
Метод 2: использование функции Transform() с toupper()
Функция Transform() из библиотеки
#include <iostream>
#include <algorithm>
#include <cctype>
std::string capitalizeFirstLetter(std::string str) {
if (!str.empty()) {
std::transform(str.begin(), str.begin() + 1, str.begin(), ::toupper);
}
return str;
}
int main() {
std::string input = "hello world";
std::cout << capitalizeFirstLetter(input) << std::endl;
return 0;
}
Метод 3. Использование замены подстроки
Этот метод включает в себя извлечение первого символа, преобразование его в верхний регистр и последующую замену его в исходной строке с помощью функций substr() и replace().
#include <iostream>
#include <string>
std::string capitalizeFirstLetter(std::string str) {
if (!str.empty()) {
std::string firstChar = str.substr(0, 1);
std::string capitalizedChar = firstChar;
capitalizedChar[0] = std::toupper(capitalizedChar[0]);
str.replace(0, 1, capitalizedChar);
}
return str;
}
int main() {
std::string input = "hello world";
std::cout << capitalizeFirstLetter(input) << std::endl;
return 0;
}
Метод 4. Использование stringstream
Этот метод предполагает использование класса stringstream для разделения строки на слова, использования заглавной первой буквы каждого слова, а затем их обратного объединения.
#include <iostream>
#include <sstream>
#include <string>
std::string capitalizeFirstLetter(std::string str) {
std::stringstream ss(str);
std::string word;
std::string capitalizedStr;
while (ss >> word) {
word[0] = std::toupper(word[0]);
capitalizedStr += word + " ";
}
return capitalizedStr;
}
int main() {
std::string input = "hello world";
std::cout << capitalizeFirstLetter(input) << std::endl;
return 0;
}
Метод 5. Использование регулярного выражения.
Этот метод предполагает использование регулярных выражений для поиска первой буквы каждого слова и ее заглавной буквы с помощью функции regex_replace().
#include <iostream>
#include <regex>
#include <string>
std::string capitalizeFirstLetter(std::string str) {
std::regex regex("\\b(\\w)");
return std::regex_replace(str, regex, [](auto match) {
return std::string(1, std::toupper(match.str()[0]));
});
}
int main() {
std::string input = "hello world";
std::cout << capitalizeFirstLetter(input) << std::endl;
return 0;
}
В этой статье мы рассмотрели пять различных способов сделать первую букву строки заглавной в C++. Каждый метод предлагает уникальный подход, предоставляющий вам гибкость в зависимости от ваших конкретных требований. Независимо от того, предпочитаете ли вы использовать встроенные функции или библиотеки, эти методы помогут вам достичь желаемого результата. Поэкспериментируйте с этими методами и выберите тот, который лучше всего соответствует вашему стилю программирования и потребностям проекта.