C++에서 문자열의 첫 글자를 대문자로

Neha Imran 2023년10월12일
C++에서 문자열의 첫 글자를 대문자로

이 문서에서는 문자열의 첫 번째 알파벳을 대문자로 변환하는 다양한 방법을 살펴봅니다.

C++에서 문자열의 첫 글자를 대문자로

우리는 이 문제를 세 가지 다른 경우에 다룰 것입니다:

  1. 문자열은 알파벳으로 시작합니다.
  2. 문자열이 특수 문자 또는 숫자로 시작합니다.
  3. 문자열에는 멀티바이트 시작 문자가 포함되어 있으며 각 단어를 대문자로 표시해야 합니다.

문자열은 첫 번째 문자로 알파벳을 포함합니다.

이 경우에 대한 해결책은 간단합니다. 내장 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() 메서드를 사용합니다.

  1. toupper() - 알파벳 문자를 대문자로 변환합니다.
  2. isalpha() - 문자가 알파벳인지 확인합니다.
  3. 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

관련 문장 - C++ String