C++에서 문자열의 첫 글자를 대문자로
이 문서에서는 문자열의 첫 번째 알파벳을 대문자로 변환하는 다양한 방법을 살펴봅니다.
C++에서 문자열의 첫 글자를 대문자로
우리는 이 문제를 세 가지 다른 경우에 다룰 것입니다:
- 문자열은 알파벳으로 시작합니다.
- 문자열이 특수 문자 또는 숫자로 시작합니다.
- 문자열에는 멀티바이트 시작 문자가 포함되어 있으며 각 단어를 대문자로 표시해야 합니다.
문자열은 첫 번째 문자로 알파벳을 포함합니다.
이 경우에 대한 해결책은 간단합니다. 내장 toupper()
라이브러리 함수를 사용하거나 사용자 정의 구현을 사용할 수 있습니다.
C++에는 toupper()
라는 메서드가 있습니다. 이 메서드는 소문자를 대문자로 변환합니다.
문자열의 초기 인덱스에서 이 함수를 호출하기만 하면 목표를 달성할 수 있습니다.
예제 코드:
#include <iostream>
#include <string>
using namespace std;
int main() {
string str = "sudo";
str[0] = toupper(str[0]);
cout << str;
}
출력:
Sudo
내장 메서드 뒤에 있는 논리에 익숙해지는 것이 항상 현명합니다. 내장된 것을 사용하지 않고 해결책을 찾아봅시다.
a
에서 z
까지의 소문자는 97
에서 122
사이의 ASCII 값을 가지며 A
에서 Z
까지의 대문자는 65
에서 92
사이의 ASCII 값을 갖습니다. 소문자에서 대문자로 변환하기 위해 입력 문자의 ASCII 값에서 32
를 뺍니다.
항상 첫 번째 문자가 이미 대문자인지 확인하는 것이 좋습니다. 그렇지 않으면 이상한 출력에 직면해야 할 수도 있습니다.
예제 코드:
#include <iostream>
#include <string>
using namespace std;
int main() {
string ML_Model = "artificial neural networks";
if (ML_Model[0] >= 97 && ML_Model[0] <= 122) { // if it is a lowercase char
ML_Model[0] = ML_Model[0] - 32;
}
cout << ML_Model;
}
출력:
Artificial neural networks
문자열의 첫 글자는 특수 문자입니다.
이제 문자열 시작 부분에 특수 문자나 숫자가 있을 수 있는 경우에 대해 설명합니다. 이 경우 첫 글자에서 32
를 빼면 이상한 기호가 생성될 수 있습니다.
이러한 유형의 문자열을 처리하기 위해 먼저 isalpha
메서드를 사용하여 알파벳인지 여부를 확인합니다. 그리고 이 방법 후에 캐릭터에 toupper
기능을 사용합니다.
예제 코드:
#include <iostream>
using namespace std;
void upperCaseAlphabet(string &str) {
for (int i = 0; i <= str.length(); i++) {
if (isalpha(str[i])) {
str[i] = toupper(str[i]);
break;
}
}
}
int main() {
string str = "#1delftstack";
upperCaseAlphabet(str);
cout << str;
}
출력:
#1Delftstack
멀티바이트 시작 문자를 포함하는 여러 단어가 있는 문자열
이전 예제에서는 한 단어만 포함하는 문자열을 다루었습니다. 이제 더 많은 단어와 특수 문자가 포함된 더 긴 문자열로 작업하고 문자열의 각 단어를 대문자로 표시해 보겠습니다.
목표를 달성하기 위해 toupper()
, isalpha()
및 isspace()
메서드를 사용합니다.
예제 코드:
#include <iostream>
#include <string>
using namespace std;
void upperCaseAlphabet(string &str) {
bool flag = true;
for (int i = 0; i <= str.length(); i++) {
if (isalpha(str[i]) && flag == true) {
str[i] = toupper(str[i]);
flag = false;
} else if (isspace(str[i])) {
flag = true;
}
}
}
int main() {
string str = "i $love #\Traveling";
upperCaseAlphabet(str);
cout << str;
}
출력:
I $Love #\Traveling