You are on page 1of 20

1.

Kh¸i niÖm

X©u lµ d·y c¸c kÝ tù trong b¶ng


m· ASCII. Mçi kÝ tù ®­ưîc gäi lµ
1 phÇn tö cña x©u. Sè lượng kÝ
tù trong x©u gäi lµ ®é dµi cña
x©u. X©u cã ®é dµi b»ng 0 gäi lµ
x©u rçng.
1. Kh¸i niÖm

VÝ dô:

A T I n H o c
1 2 3 4 5 6 7
Trong ®ã:
 Tªn x©u: A;
 Mçi kÝ tù gäi lµ mét phÇn tö cña x©u;
 §é dµi cña x©u (sè kÝ tù trong x©u tÝnh c¶ kÝ tù tr¾ng): 7;
 Khi tham chiÕu ®Õn kÝ tù thø i cña x©u ta viÕt:
Tªn biÕn x©u[chØ sè].
VÝ dô: A[5]=‘H’.
2. Khai b¸o kiÓu d÷ liÖu x©u (trong C++)

string <tªn biÕn x©u>[®é dµi lín nhÊt];

VÝ dô: string hoten[26];

 Khi khai b¸o x©u cã thÓ bá qua phÇn khai b¸o [®é dµi lín nhÊt], khi
®ã ®é dµi lín nhÊt cña x©u sÏ nhËn gi¸ trÞ ngÇm ®Þnh lµ 255.

VÝ dô: string chuthich;


3. C¸c thao t¸c xö lÝ x©u
a. C¸c phÐp to¸n xö lÝ x©u.
BiÓu thøc x©u: Lµ biÓu thøc trong ®ã c¸c to¸n h¹ng lµ c¸c biÕn
x©u, h»ng x©u, biÕn kÝ tù.
* PhÐp ghÐp x©u: kÝ hiÖu “+” dïng ®Ó ghÐp nhiÒu x©u thµnh mét x©u
VÝ dô: ‘Yen’ +  ‘YenBai’
‘Bai’
* PhÐp so s¸nh: ==, !=, <, <=, >, >=

* Quy ­ước:

- X©u rçng lµ x©u ‘’


VÝ dô
- X©u A = B nÕu chóng gièng hÖt nhau.  ‘Tin hoc’ =‘Tin hoc’
- X©u A > B nÕu:
+ KÝ tù ®Çu tiªn kh¸c nhau gi÷a  ‘Hai Hung’ >‘Hai Duong’
chóng ë x©u A cã m· ASCII lín h¬n
ë x©u B.
+ X©u B lµ ®o¹n ®Çu cña x©u A. ‘Xau’ < ‘Xau ki tu’
3. C¸c thao t¸c xö lÝ x©u

b. C¸c thñ tôc vµ hµm chuÈn xö lÝ x©u

* Hàm nhập xâu:


Chúng ta vẫn sử dụng thủ tục cin để nhập xâu được, điểm khác
nhau giữa cin và getline được thể hiện trong ví dụ sau: Giả sự
bạn muốn nhập xâu “Truong Dong Da” cho xâu s.

cin>>s; chỉ nhận được xâu “Truong”


getline(cin,s); nhận toàn bộ xâu “Truong Dong Da”
3. C¸c thao t¸c xö lÝ x©u

b. C¸c thñ tôc vµ hµm chuÈn xö lÝ x©u


Ví dụ:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s;
cout<<”Nhap ten: “;
getline(cin, s);
cout<<”Chao ban “<<s;
return 0;
}
3. C¸c thao t¸c xö lÝ x©u

b. C¸c thñ tôc vµ hµm chuÈn xö lÝ x©u

* Hàm xóa kí tự:


Cú pháp: <tên biến xâu>.erase(vt, n)
Xóa n của chuỗi <tên biến xâu> kể từ vt; nếu không quy
định giá trị n thì tất cả các ký tự của <tên biến xâu> từ vt
trở đi sẽ bị xóa

Ví dụ: s=“Truong Hoang";


s=s.erase(6,5);
Kết quả cho là xâu “Truongg”
3. C¸c thao t¸c xö lÝ x©u

b. C¸c thñ tôc vµ hµm chuÈn xö lÝ x©u


#include <iostream>
#include <string>
using namespace std;
int main()
{
string s; int vt, n;
cout<<”Nhap xau bat ki: “;
getline(cin, s);
cout<<”Nhap vi tri: “; cin>>vt;
cout<<”Nhap so luong ki tu can xoa: “; cin>>n;
s=s.erase(vt,n);
cout <<s;
return 0;
}
3. C¸c thao t¸c xö lÝ x©u

b. C¸c thñ tôc vµ hµm chuÈn xö lÝ x©u

* Hàm chèn xâu:


Cú pháp: <tên biến xâu>.insert(vt, <xâu chèn>) chèn
<xâu chèn> vào xâu <tên biến xâu>, bắt đầu ở vị trí vt.

Ví dụ: s="truong Van Thu“;


t=" Hoang";
  s=s.insert(6,t);

Kết quả màn hình xuất ra xâu “truong Hoang Van Thu”
3. C¸c thao t¸c xö lÝ x©u

b. C¸c thñ tôc vµ hµm chuÈn xö lÝ x©u


Ví dụ
#include <iostream>
#include <string>
using namespace std;
 int main()
{
string s, st; int n;
cout<<”Nhap xau thu 1: “; getline(cin, s);
cout<<”Nhap xau thu 2: “; getline(cin, st);
cout<<“moi ban nhap vi tri chen:”; cin>>n;
  s=s.insert(n,st); cout <<s;
return 0;
}
3. C¸c thao t¸c xö lÝ x©u

b. C¸c thñ tôc vµ hµm chuÈn xö lÝ x©u

* Hàm tạo xâu từ xâu đã có: <tên biến xâu>.substr(vt, n)


tạo xâu gồm N kí tự liên tiếp bắt đầu từ vị trí vt của
xâu <tên biến xâu>.

Ví dụ: s= “truong Hoang Van Thu”;

t=s.substr(7,5); sẽ cho chúng ta kết quả t= “Hoang”


3. C¸c thao t¸c xö lÝ x©u

b. C¸c thñ tôc vµ hµm chuÈn xö lÝ x©u


Ví dụ
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s,t; int n;
cout<<”Nhap xau: “; getline(cin, s);
cout<<“moi ban nhap vi tri can copy:”; cin>>vt;
cout<<“moi ban nhap so ki tu can copy:”;
cin>>n; t=s.substr(vt,n);
cout <<t; return 0;
}
3. C¸c thao t¸c xö lÝ x©u

b. C¸c thñ tôc vµ hµm chuÈn xö lÝ x©u

* Hàm lấy độ dài của xâu:


Cú pháp: <tên biến xâu>.size() lấy chiều dài của tên
biến xâu.
Ví dụ: s="truong da";
int n=s.size();
=> Kết quả là 9.
3. C¸c thao t¸c xö lÝ x©u

b. C¸c thñ tôc vµ hµm chuÈn xö lÝ x©u

Ví dụ:
#include <iostream>
#include <string>
using namespace std;
 int main()
{
string s="truong da";
int n=s.size();
cout <<n;
return 0;
}
3. C¸c thao t¸c xö lÝ x©u

b. C¸c thñ tôc vµ hµm chuÈn xö lÝ x©u

* Hàm đổi ký tự:


+ Hàm đổi ký tự thành kí tự hoa:
Cú pháp: toupper(<ký tự>)
Ví dụ: s="truong Hoang Van Thu";

s[i]=toupper(s[i]);

=> s=“TRUONG HOANG VAN THU";


3. C¸c thao t¸c xö lÝ x©u

b. C¸c thñ tôc vµ hµm chuÈn xö lÝ x©u

#include <iostream>
#include <string>
using namespace std;
int main()
{
string s;
cout<<”Nhap xau: “;
getline(cin, s);
int n=s.size();
for(int i=0;i<n;i++)
s[i]=toupper(s[i]);
cout <<s;
return 0;
}
3. C¸c thao t¸c xö lÝ x©u

b. C¸c thñ tôc vµ hµm chuÈn xö lÝ x©u

* Hàm đổi ký tự:

+ Hàm đổi ký tự thành kí tự thường:

Cú pháp: tolower(<ký tự>)

Ví dụ: s="truong Hoang Van Thu";

s[i]=tolower(s[i]);

=> s=“truong hoang van thu";


3. C¸c thao t¸c xö lÝ x©u

b. C¸c thñ tôc vµ hµm chuÈn xö lÝ x©u

#include <iostream>
#include <string>
using namespace std;
 
int main()
{
string s="truong Hoang Van Thu";
int n=s.size();
for(int i=0;i<=n;i++)
s[i]=tolower(s[i]);
cout <<s;
return 0;
}
BÀI TẬP

Cho 3 xâu: s=”Nha_Trang”, t=”Khanh_Hoa” và c=””. Báo


cáo kết quả các công việc thực hiện như sau:
a) s=s.erase(3,4) => s=? d) int n=s.size() => n=?
t=t.erase(4,5) => t=? int n=t.size() => n=?
b) s=s.insert(3,t) => s=? e) s[i]=toupper(s[i]) =>s=?
t=t.insert(2,s) => t=? t[i]=tolower(t[i]) =>t=?
c) c=t.substr(2,4) => c=?
c=s.substr(5,2) => c=?

You might also like