C++:
Зробити першу літеру рядка великою
Як:
У C++, ви можете зробити рядок заголовним за допомогою стандартної бібліотеки без необхідності використання сторонніх бібліотек. Однак, для більш складних або специфічних поведінок перетворення на заголовний регістр, бібліотеки, як-от Boost, можуть бути дуже корисними. Нижче наведено приклади, що ілюструють обидва підходи.
Використання стандартної бібліотеки C++:
#include <iostream>
#include <cctype> // для std::tolower та std::toupper
#include <string>
std::string capitalizeString(const std::string& input) {
std::string result;
bool capitalizeNext = true;
for (char ch : input) {
if (std::isspace(ch)) {
capitalizeNext = true;
} else if (capitalizeNext) {
ch = std::toupper(ch);
capitalizeNext = false;
}
result += ch;
}
return result;
}
int main() {
std::string text = "hello world from c++";
std::string capitalizedText = capitalizeString(text);
std::cout << capitalizedText << std::endl; // Результат: "Hello World From C++"
}
Використання бібліотеки Boost:
Для більш складної маніпуляції з рядками, включаючи чутливе до локалі перетворення на заголовний регістр, вам може знадобитися використовувати бібліотеку Boost String Algo.
Спочатку переконайтеся, що у вашому проєкті встановлено та налаштовано бібліотеку Boost. Після цього можна підключити необхідні заголовочні файли та використовувати її можливості, як показано нижче.
#include <boost/algorithm/string.hpp>
#include <iostream>
#include <string>
int main() {
std::string text = "hello world from c++";
std::string capitalizedText = text;
// перетворює першу літеру кожного слова на велику
boost::algorithm::to_lower(capitalizedText); // переконуємося, що рядок у нижньому регістрі
capitalizedText[0] = std::toupper(capitalizedText[0]); // робимо перший символ великою літерою
for (std::size_t i = 1; i < capitalizedText.length(); ++i) {
if (isspace(capitalizedText[i - 1])) { // робимо велику літеру після пробілу
capitalizedText[i] = std::toupper(capitalizedText[i]);
}
}
std::cout << capitalizedText << std::endl; // Результат: "Hello World From C++"
}
У цьому випадку, Boost спрощує деякі завдання маніпуляції з рядками, але все ж вимагає спеціального підходу для справжнього перетворення на заголовний регістр, оскільки в основному пропонує утиліти для трансформації та конвертації регістру.