[Bài 46] Chuyển Đổi Xâu Ký Tự In Hoa, In Thường

[Bài 46] Chuyển Đổi Xâu Ký Tự In Hoa, In Thường

Chuyển đổi xâu ký tự thành in hoa hoặc in thường là một công việc thường gặp khi làm việc với xâu ký tự, bài viết này mình sẽ hướng dẫn các bạn các cách phổ biến để chuyển 1 xâu ký tự thành dạng in thường hoặc in hoa.

1. Cài Đặt Hàm Chuyển Đổi Hoa Thường

Để tự cài đặt hàm chuyển đổi in hoa, in thường bạn cần sử dụng các hàm chuyển đổi loại ký tự như tolower(), toupper() hoặc tự viết các câu lệnh để chuyển đổi.

Lưu ý : Nếu bạn muốn thay đổi string thông qua hàm bạn cần sử dụng tham chiếu.

Mã nguồn 1: 

#include <iostream>
#include <string>
#include <ctype.h>

using namespace std;

void to_lower(string &s) {
for (int i = 0; i < s.size(); i++) {
    s[i] = tolower(s[i]);
}

}

void to_upper(string &s) {
for (int i = 0; i < s.size(); i++) {
    s[i] = toupper(s[i]);
}

}

int main() {
string s = "azbook BLOG";
to_lower(s);
cout << s << endl;
to_upper(s);
cout << s << endl;

}

 

Output : 

azbook blog
AZBOOK BLOG

 

Bạn cũng có thể viết hàm để trả về string ở dạng in thường hoặc in hoa.

Mã nguồn 2 :

#include <iostream>
#include <string>
#include <ctype.h>

using namespace std;

string to_lower(string s) {
for (int i = 0; i < s.size(); i++) {
    if (s[i] >= 'A' && s[i] <= 'Z') {
        s[i] += 32;
    }
}
return s;

}

string to_upper(string s) {
for (int i = 0; i < s.size(); i++) {
    if (s[i] >= 'a' && s[i] <= 'z') {
        s[i] -= 32;
    }
}
return s;

}

int main() {
string s = "azbook BLOG";
cout << to_lower(s) << endl;
cout << to_upper(s) << endl;

}

 

Output : 

azbook blog
AZBOOK BLOG

 


2. Chuyển Đổi Hoa Thường Bằng Hàm transform()

Trong C++ thì bạn có thể sử dụng hàm có sẵn transform() để chuyển đổi xâu thành in hoa hoặc in thường.

Tuy nhiên cú pháp của nó hơi dài dòng và khó nhớ, thông thường mình sẽ dùng range-based for loop và hàm toupper(), tolower() để chuyển xâu thành in hoa hoặc in thường.

Mã nguồn : 

#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

int main() {
string s = "azbook BLOG strING";
transform(s.begin(), s.end(), s.begin(), ::tolower);
cout << "Lowercase : " << s << endl;
transform(s.begin(), s.end(), s.begin(), ::toupper);
cout << "Uppercase : " << s << endl;

}

 

Output : 

Lowercase : azbook blog string
Uppercase : AZBOOK BLOG STRING

 

Chuyển đổi xâu thành in hoa, in thường bằng range-based for loop kết hợp tham chiếu

Mã nguồn : 

#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

int main() {
string s = "azbook BLOG strING";
for (char &x : s)
    x = tolower(x);
cout << "Lowercase : " << s << endl;
for (char &x : s)
    x = toupper(x);
cout << "Uppercase : " << s << endl;

}

 

Output : 

Lowercase : azbook blog string
Uppercase : AZBOOK BLOG STRING

Lập trình C++ cơ bản