Kiểu xâu kí tự
Trang 1LẬP TRÌNH C++
§8 Kiểu xâu ký tự
(string)
Trang 2I Khai báo kiểu xâu ký tự
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
string st;
gọi L là độ dài của st
khi đó st[0] là ký tự thứ nhất
khi đó st[1] là ký tự thứ 2
khi đó st[L-1] là ký tự thứ L
Ví dụ : đọc vào một xâu và in ra từng ký tự trong xâu
Trang 3#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
string st;
int l,i;
void main()
{
cout<<"cho mot xau : ";
for (i=0; i<l; i++) cout<<st[i]<<" ";
}
Trang 4Khai báo mảng xâu ký tự :
string ten_mang_xau[so_phan_tu];
Giả sử ta khai báo mảng xâu :
string ds[100];
là khai báo 100 phần tử xâu ký tự đó là ds[0], ds[1], , ds[99]
Ví dụ : đọc vào một danh sách họ tên của một lớp
và in ra danh sách đã đọc
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
string ds[100];
int n,i;
Trang 5void main()
{
cout<<"cho so nguoi : "; cin>>n;
getchar();
for (i=1; i<=n; ++i)
{
cout<<"Cho nguoi thu "<<i<<": ";
getline(cin,ds[i]);
getchar();
}
cout<<"Danh sach vua doc vao la : "<<endl;
for (i=1; i<=n; ++i) cout<<i<<" "<<ds[i]<<endl;
}
Trang 6II Các hàm đối với xâu ký tự
đổi xâu st thành chữ in hoa
đổi xâu st thành chữ in thường
của xâu st với st1 nếu hai xâu bằng nhau hàm cho giá trị 0; nếu xâu con nhỏ hơn st1 hàm cho giá trị
-1, nếu xâu con nhỏ hơn st1 hàm cho giá trị 1
Trang 7vị trí tìm từ vị trí pos
tự của st từ vị trí pos bàng xâu st1
lấy từ vị trí pos và lấy number ký tự
hoa
Trang 8III Bài tập̣
Đọc vào một xâu ký tự :
1 Đếm số chữ số có trong xâu (‘0’ ’9’)
2 Đếm số chữ cái có trong xâu (‘A’ ’Z’)
3 Đếm số từ có trong xâu (‘_’)
4 Đếm số câu có trong xâu (‘.’)
5 Đếm số mệnh đề có trong xâu (“.,!?;”)
6 Bỏ các dấu cách thừa ở đầu ở giữa và ở cuối xâu
7 Đọc vào họ tên của một người, in tách ra tên và họ
8 Đếm xem trong xâu có bao nhiêu ký tự khác nhau
9 Đọc vào n tên hàng hóa, sắp xếp theo thứ tự abc và in ra
10 Lập từ điển Anh Việt
11 Đọc một số có 3 chữ số theo cách viết bằng chữ
12 Đổi sang xâu chuẩn : ký tự ở đầu từ là chữ in hoa, ở sau từ
là chữ thường
Trang 9//1 Đếm số chữ số
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
string st;
int l,i,d=0;
void main()
getline(cin,st);
l=st.size();
for (i=0; i<l; i++)
if (st[i]>='0' && st[i]<='9') d++;
cout<<"So chu so la : "<<d<<endl;
}
Trang 102 Đếm số chữ cái :
if (toupper(st[i])>='0' && toupper(st[i])<='9') d++;
3 Đếm số từ :
d=1; if (st[i])==‘ ') d++;
4 Đếm số câu :
d=0; if (st[i])==‘.') d++;
5 Đếm số mệnh đề :
if (st[i]=='.'||st[i]==','||st[i]=='!'||st[i]=='?'||st[i]=='-') d++;
6 Tách tên họ ;
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
Trang 11string name, fname, lname;
int L,i;
void main()
{
cout<<"cho ho ten : ";
getline(cin,name);
L=name.size();
i=L-1;
while (name[i]!=' ' && i>0) i ;
fname.assign(name,i+1,L-i);
lname.assign(name,0,i);
cout<<"Ten la : "<<fname<<endl;
cout<<"Ho la : "<<lname<<endl;
}