You are on page 1of 3

Một số hàm phổ biết xử lý xâu trong c++

1. Getline(cin,s): nhập xâu bao gồm cả khoảng trắng


2. S.length(): đếm số lượng phần tử trong xâu S
3. S.find(s1): tìm vị trí xuất hiện đầu tiên của xâu s1 trong xâu S
4. S.erase(x,y): xóa y ký tự trong xâu S bắt đầu từ vị trí x
5. S.insert(x,s1): chèn xâu s1 vào xâu S tại vị trí x
Một số bài tập cơ bản minh họa các hàm và cách xử lý xâu
Bài 1: Nhập vào một xâu ký tự, đếm xem xâu đó có bao nhiêu ký tự ‘A’.
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s;
int dem=0;
getline(cin,s);
for(int i=0;i<s.length();i++)
if(s[i]=='A') dem++;
cout<<dem;
}

Bài 2: Nhập vào 1 xâu ký tự, Tìm xem có từ “An” hay không? Nếu có thay thế từ “An” thành từ
“Nam”.
Ví dụ: “Hom nay An di hoc, An khong hoc bai do do An cam thay rat lo lang”.
Xâu sau khi chuyển đổi: “Hom nay Nam di hoc, Nam khong hoc bai do do Nam cam thay rat lo
lang”.
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;
getline(cin,s);
int a=s.find("An");
while(a>=0)
{
s.erase(a,2);
s.insert(a,"Nam");
a=s.find("An");
}
cout<<s;
}
Chú ý: Do tính chất của code chỉ mang tính minh họa các hàm một các đơn giản nhất, để tránh
trường hợp phức tạp hóa vấn đề. do đó chưa xử lý các trường hợp đặc biệt, ví dụ các trường hợp
không phải là một từ mà là một cụm từ như Annnn.

Page 1 of 3 nhocqt@gmail.com
Bài 3: Chuẩn hóa văn bản.
Theo quy tắc soạn thảo văn bản, mỗi từ chỉ cách nhau duy nhất một khoảng trắng. Hãy viết
chương trình nhập vào một xâu ký tự sau đó xóa hết khoảng trắng dư.
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;
getline(cin,s);
int t=s.find(" ");
while(t>=0)
{
s.erase(t,1);
t=s.find(" ");
}
if(s[0]==' ')s.erase(0,1);
if(s[s.length()-1]==' ')s.erase(s.length()-1,1);
cout<<s;
}

Bài 4: Nhập vào 1 xâu tính tổng các các ký tự số trong xâu.
Ví dụ: xâu = “123 aaa12 bb24” vậy tổng = 1+2+3+1+2+2+4=15
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;
getline(cin,s);
int tong=0;
for(int i=0; i<s.length();i++)
if(s[i]<='9'&&s[i]>='0')tong=tong+(s[i]-48);
cout<<tong;
}
Chú ý: Với bài toán đổi ký tự thường thành ký tự hoa hoặc ngược lại thì chúng s[i] +-32.
Bài 5: Viết chương trình nhập vào 1 xâu kiểm tra xuâu đó có đối xứng hay không?
Ví dụ: xâu = “AABBAA” là xâu đối xứng.

Page 2 of 3 nhocqt@gmail.com
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s,s1;
getline(cin,s);
s1="";
for(int i=s.length()-1;i>=0;i--) s1=s1+s[i];
if(s==s1)cout<<"xau doi xung";
else cout<<"xau khong doi xung";
}

Bài 6: Nhập vào họ tên của một học sinh sau đó cho biết họ, tên, tên lót.
Ví dụ nhập: Nguyen Van An
Ho la: Nguyen
Ten lot: Van
Ten: An
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s0,s1="",s2="",s3="";
getline(cin,s0);
int i=0, j=s0.length()-1;
while(s0[i]!=' ')i++;
while(s0[j]!=' ')j--;
for(int k=0;k<i;k++)s1=s1+s0[k];
for(int k=i+1;k<j;k++)s2=s2+s0[k];
for(int k=j+1;k<s0.length();k++)s3=s3+s0[k];
cout<<"Ho: "<<s1<<"\n";
cout<<"Ten lot: "<<s2<<"\n";
cout<<"Ten: "<<s3;
}

Page 3 of 3 nhocqt@gmail.com

You might also like