1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng: Hướng dẫn thao tác string variable

7 242 1

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 7
Dung lượng 855,14 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

kiểu dữ liệu string Help Đăng ký Nếu đây là lần đầu tiên bạn ghé thăm diễn đàn cộng đồng C Việt, vui lòng tìm hiểu luật lệ tham gia, đọc các hướng dẫn trước khi bạn tiến hành đăng ký mộ

Trang 1

27/3/2015 C++ Tutorial: hướng dẫn thao tác string variable  kiểu dữ liệu string

http://diendan.congdongcviet.com/threads/t53138::huong­dan­thao­tac­string­variable­kieu­du­lieu­string.cpp 1/7

Username  Password   Log in    Nhớ tôi vào?

  Diễn đàn   LẬP TRÌNH C++ | LẬP TRÌNH C | LẬP TRÌNH C++0X   Thủ thuật, Tutorials và Mã nguồn C/C++/C++0x   C++ Tutorial hướng dẫn thao tác string

variable  kiểu dữ liệu string

Help Đăng ký

 

Nếu đây là lần đầu tiên bạn ghé thăm diễn đàn cộng đồng C Việt, vui lòng tìm hiểu luật lệ tham gia, đọc các hướng dẫn trước khi bạn tiến hành đăng ký một tài khoản. Bạn phải

đăng ký thành viên trước, hoặc đăng nhập bằng tài khoản facebook của bạn bạn mới có thể gửi bài viết, tải các đính kèm

Phạm Quang Minh, Cuong Nguyen Ngoc và 5.225 người khác thích điều này

Thích

Từ 1 tới 10 trên tổng số 14 kết quả Trang 1 trên tổng số 2 1 2 Cuối cùng

Đề tài: hướng dẫn thao tác string variable  kiểu dữ liệu string

21 người thích nội dung này. Hãy là người đầu tiên trong số bạn bè của bạn

Thích Chia sẻ

Các công cụ đề tài Display 15­04­2011,  05:33 AM

Ngày gia nhập:

Nơi ở:

Bài viết:

01 2011

­Mountain­ 768

 hướng dẫn thao tác string variable  kiểu dữ liệu string

Hôm trước mình có làm một bài liên quan đến xâu ký tự nhưng phải dùng mảng kí tự để xử lý xâu. Thầy bảo nếu dùng mảng thì làm sẽ khó +

phức tạp hơn dùng kiểu string (tức là string variable). Chính vì điều này mà mình bắt tay vào điều tra xem string là j. Nhưng rất tiếc là mình ko

tìm thấy mấy tài liệu tiếng việt nói về kiểu dữ liệu này

Tiếng anh thì mình nhận mình ngu rồi. kiểm tra các thứ  thì đc có toàn 7^^. Nên rất ngại đọc tiếng anh  … Nhưng lần này quyết tâm chơi cả

hàng nội lẫn hàng ngoại….^^!~

Đọc tiếng anh + tiếng việt

Viết tut đầu tiên có sai sót mong mọi người góp ý~!

­Bàn về hạn chế của mảng kí tự: khi học C chắc chắn bạn sẽ phải học về cái này. Để xử lý một xâu bạn phải sử dụng tới mảng ký tự kèm theo thư viện string.h. Các thao tác xử lý hết sức phức tạp. Nếu bạn dùng tới con trỏ lưu xâu thì rất phức tạp kèm theo lỗi phát sinh trong quá trình.(kết

thúc của mảng kí tự là kí tự ‘\0’)

­> bạn phải chủ động kiểm soát bộ nhớ khi cấp phát. Và am hiểu các kỹ thuật về con trỏ…

Với mảng kí tự bạn ko thể thực hiện các phép gán hay phép + (nối xâu) hay phép so sánh…. Mà phải sử dụng các hàm strcmp, strcpy, strcat…

trong thư viện string.h để gán, hay ghép……

OO: Kiểu string có trong thư viện chuẩn (standard template library)của c++ (string # string.h)

1: Các phương thức, phép toán tiện ích của kiểu string

­phép toán +, +=; dùng để ghép 2 chuỗi (tất nhiên là cũng ghép một ký tự vào chuỗi)

Vd:

1. #include<iostream>

2. #include<string>

3.   

4. using namespace std;

5.   

6. int main()

7. {

8.         string fname ="Hung", mname="Khac", sname="Nguyen", Fname;

9.         string space =" ";

10.         Fname = sname+space+mname+space+fname;

11.         cout<<Fname<<endl;

12.         system("pause")

13.         return ;

14. }

1. #include<iostream>

2. #include<string>

3.   

4. using namespace std;

5.   

6. int main()

7. {

8.         string name[]={"Hung", "Khac", "Nguyen"}

9.         string Fname, space =" ";

10.         int n=sizeof(name)sizeof(string)

11.         for(int i=‐; i>=0i‐‐){

12.        Fname+name[]space;

13.         }

14.         cout<<Fname<<endl;

15.         system("pause")

16.         return ;

17. }

#1 Thành viên nhiệt tình

beautifulsoul84hung  Tất cả diễn đàn

Trang 2

27/3/2015 C++ Tutorial: hướng dẫn thao tác string variable  kiểu dữ liệu string

http://diendan.congdongcviet.com/threads/t53138::huong­dan­thao­tac­string­variable­kieu­du­lieu­string.cpp 2/7

­­­­­­­­các phép toán so sánh theo thứ tự từ điển (==; !=; ……)

1. #include<iostream>

2. #include<string>

3.   

4. using namespace std;

5. void swap(string a, string b;

6. int main()

7. {

8.         string name[]={"Hung", "Khac", "ANguyen"}

9.         string Fname, space =" ";

10.         int n=sizeof(name)sizeof(string)

11.         for(int i=; i<;++){

12.        for(int j=+; j<; j++){

13.         if(name[]name[])

14.        swap(name[], &name[]);

15.        }

16.         }

17.         for(int i=; i<; i++){

18.        cout<<name[] space;

19.         }

20.         cout<<Fname<<endl;

21.         system("pause")

22.         return ;

23. }

24. void swap(string a, string b){

25.         string tam;

26.         tam=a

27.         *= ;

28.         *=tam;

29. }

­­­­ phép gán (=);

­­­­phương thức length();

Ta dùng phương thức này để duyệt từng kí tự của chuỗi

Giả sử như s là biến kiểu string thì s[i] là kí tự thứ i của s sao cho 0<=i<s.length();

<cũng có nghĩa là lấy độ dài của chuỗi s để có thể duyệt đến từng phần tử của nó>

1. #include<iostream>

2. #include<string>

3.   

4. using namespace std;

5. void swap(string a, string b;

6. int main()

7. {

8.         char x[]="Nguyen Khac Hung";

9.         string name ="xyz";

10.         cout<<name<<endl;

11.         name=;

12.         cout<<name.length()<<"  : "<<name<<endl;

13.         system("pause")

14.         return ;

15. }

2: Nhập dữ liệu

Cách nhập một string từ bàn phím

Form:

Getline( istream &in, string &str, ‘m’ );

Istream&in: có thể là cin(thường là cin), và trong trường hợp lấy dữ liệu từ file thì là đối tượng khác. Dữ liệu sẽ đc ghi vào string str đến khi gặp ký

tự kết thúc là ‘m’ (giá trị này có thể có hoặc ko). Nếu ko có thì chương trình mặc định là \n. có thể dùng kết hợp toán tử >> để nhập

Vd: getline(cin, str)>> kt;

Trong đó str và kt đã đc khai báo…

Lệnh này yêu cầu đợi nhập từ bàn phím string str và một cái kt nào đó

1. // getline with strings

2. #include <iostream>

3. #include <string>

4. using namespace std;

5. int main ()

6. {

7. string str;

8. short age;

9. cout << "Please enter full name and age"<< endl;

10. getline(cin, str)>> age;

11. cout << "Thank you " << str << "! "

12. return ;

13. }

3:: chèn, xóa, lấy chuỗi con

a) lấy chuỗi con:

phương thức substr(int a, int b);

khi sử dụng là str.sub(int a, int b);

kết quả sẽ trả về một chuỗi từ chuỗi str  sao cho lấy b ký tự kể từ vị trí thứ a

1. // substr(,)with string

2. #include <iostream>

3. #include <string>

4. using namespace std;

5. int main ()

6. {

7.         string str="Nguyen Khac Hung";

8.         cout<<"Ten ban: "<<str<<endl;

9.         cout << "Thank you " << str.substr(12,)<< "!\n"

10.         system("pause")

11.         return ;

String thực chất là một vector<char>(phần này chưa đọc nên chưa dám viết^^)

Trang 3

27/3/2015 C++ Tutorial: hướng dẫn thao tác string variable  kiểu dữ liệu string

http://diendan.congdongcviet.com/threads/t53138::huong­dan­thao­tac­string­variable­kieu­du­lieu­string.cpp 3/7

12. }

b) chèn

chèn một chuỗi vào một chuỗi(tất nhiên chèn một ký tự thì tương đương chuỗi)

để thực hiện thao tác chèn ta dùng phương thức insert(int a, int b, string c)

khi sử dụng ta dùng str.insert(int a, int b, string c);

khi đó mảng str là mảng sẽ được chèn vào còn a là vị trí sẽ đc chèn, b là số lần chèn, c chính là chuỗi dùng để chèn vào a. khi bỏ b đi thì mặc định

nó là 1;

1. #include <iostream>

2. #include <string>

3. using namespace std;

4. int main ()

5. {

6.         string str="Nguyen Hung";

7.         string mname=" khac";

8.         str.insert(, mname)

9.         cout<<"Ten ban: "<< str.substr(12, 4<<endl<< str<< endl;

10.         cout << "Thank you " << str << "!\n"

11.         system("pause")

12.         return ;

13. }

c) xóa

để xóa kí tự trong string str ta dùng phương thức erase(int a, int b);

cách dùng: str.erase(a, b);

khi đó sẽ xóa b kí tự từ vị trí a;

1. #include <iostream>

2. #include <string>

3. using namespace std;

4. int main ()

5. {

6.         string str="Nguyen Hung";

7.         string mname=" khac";

8.         str.insert(, mname)

9.         cout<<"Ten ban: "<< str.substr(12, 4<<endl<< str<< endl;

10.         cout << "Thank you " << str.erase(,12)<< "!\n"

11.         system("pause")

12.         return ;

13. }

4) So sánh 2 chuỗi

Như có nói ở phía trên. Để so sánh 2 chuỗi ta có thể dùng các toán tử so sánh ==, !=……

Nhưng khi so sánh 1 phần nào đó ta dùng phương thức compare

Cấu trúc: 

int compare ( const string& str ) const;

int compare ( const char* s ) const;

int compare ( size_t pos1, size_t n1, const string& str ) const;

int compare ( size_t pos1, size_t n1, const char* s) const;

int compare ( size_t pos1, size_t n1, const string& str, size_t pos2, size_t n2 ) const;

int compare ( size_t pos1, size_t n1, const char* s, size_t n2) const;

vd: 

str.compare(s): hàm này sẽ trả về giá trị =0 hoặc là khác 0

nếu như =0 thì 2 chuỗi này bằng nhau. Nếu ko thì khác nhau

str.compare ( size_t pos1, size_t n1, s, size_t pos2, size_t n2);

khi này sẽ so sánh chuỗi str với chuỗi s nhưng ko pải so sánh toàn bộ 2 chuỗi mà là so sánh 2 phần của 2 chuỗi

chuỗi str lấy từ pos1 và lấy n1 ký tự

chuỗi s lấy từ pos2 và lấy n2 ký tự

1. #include <iostream>

2. #include <string>

3. using namespace std;

4. int main ()

5. {

6. string str1 ("green apple")

7. string str2 ("red apple")

8. if(str1.compare(str2)=)

9. cout<<"it is not the same"<<endl;

10. if(str1.compare(, 5, str2, 4, 6==0){

11. cout<<"it is apple"<<endl;

12.  system("pause")

13. return ;

14. }

Các bạn sẽ thắc mắc là nếu như n1!=n2 thì hai chuỗi đc so sánh sẽ khác nhau

Vậy hãy xem kỹ ví dụ trên để hiểu hơn vấn đề này

// chú ý thêm đó là một mảng ký tự thì gần như tương đương với chuỗi

5) tìm kiếm và thay thế

­ Phương thức tìm kiếm

str.find(char ch, int pos = 0); 

str.find(char *s, int pos = 0); 

str.find(string& s, int pos = 0); 

khi sử dung thì hàm sẽ tìm ký tự (mảng ký tự, chuỗi), ch kể từ vị trí pos. nếu ko có pos thì giá trị mặc định là 0; và tìm kiếm cho đến cuối

­phương thức thay thế replace

Cấu trúc sử dụng:

Trang 4

27/3/2015 C++ Tutorial: hướng dẫn thao tác string variable  kiểu dữ liệu string

http://diendan.congdongcviet.com/threads/t53138::huong­dan­thao­tac­string­variable­kieu­du­lieu­string.cpp 4/7

str.replace(int pos, int nchar, char *s);

str.replace(int pos, int nchar, string s);

str.replace(int pos, int nchar, int n, char ch);

cách dùng

+dùng thay thế một đoạn con trong chuỗi str cho trước

tính từ vị trí pos và thay thế chon char kí tự, bằng chuỗi con s;

+ cách thứ 3 là thay thế bằng n ký tự ch;

1. #include <iostream>

2. #include <string>

3. using namespace std;

4. int main ()

5. {

6.         string str  "I LOVE c";

7.         cout<<str<<endl;

8.         str.replace(, 1, 4, 'C')

9.         str.replace(, 1, "C")

10.         cout<<str<<endl;

11.         system("pause")

12.         return ;

13. }

6) Tách xâu.

Ps: Sau khi thức tới hơn 5h30 sáng mới hoàn thành. Mình mong tác phẩm này đc mọi người ủng hộ. bác nào thấy hay, có ích với mình thì thanks

ủng hộ e cái nha

Nhớ một người,

Là yêu hay là thích   ?

Trả lời cùng với trích dẫn 15­04­2011,  11:20 AM

Ngày gia nhập:

Bài viết: 04 201179

trời ạ sao lại nghĩ vậy , rất nhiều ng cần mà , tớ cũng cần đây , thank cái cho chủ topic lấy lại tinh thần !

#2 Thành viên chính thức

Kudo_Conan 

Trả lời cùng với trích dẫn 15­04­2011,  11:37 AM

Ngày gia nhập:

Nơi ở:

Bài viết:

01 2011

­Mountain­ 768

tại tớ ko thấy tài liệu tiếng việt đâu nên sẵn mình học thì mình viết lun 1 bài tut. hic

ngẫm thấy là các chương trình toàn dùng mảng ký tự mình thấy hơi thắc mắc

+ sách tham khảo toàn viết về array character

??

mình thấy string var rất tiện mà sao ít đc dùng nhỉ

<strc nay mình cũng toàn dùng array character>

Nhớ một người,

Là yêu hay là thích   ?

#3 Thành viên nhiệt tình

beautifulsoul84hung 

 Nguyên bản được gửi bởi Kudo_Conan 

trời ạ sao lại nghĩ vậy , rất nhiều ng cần mà , tớ cũng cần đây , thank cái cho chủ topic lấy lại tinh thần !

Trả lời cùng với trích dẫn 15­04­2011,  12:28 PM

Ngày gia nhập:

Nơi ở:

Bài viết:

11 2010 Black Hole 824

class string trong C++ thì mạnh rồi tại bạn ít dùng thôi và trên forum người ta thường giải thích bằng code C hơn là code C++

#4 Thành viên nhiệt tình

clamvn 

Trang 5

27/3/2015 C++ Tutorial: hướng dẫn thao tác string variable  kiểu dữ liệu string

http://diendan.congdongcviet.com/threads/t53138::huong­dan­thao­tac­string­variable­kieu­du­lieu­string.cpp 5/7

Mình thì ko hiểu nhiều về C++ nhưng mình nghĩ nếu có 1 cái class string như java thì sướng rồi

Cố lên. 2 năm nữa xuất bản sách nhớ tặng mình 1 cuốn nhé 

Trả lời cùng với trích dẫn 16­04­2011,  02:59 PM

Ngày gia nhập:

Nơi ở:

Bài viết:

02 2011

hà nội 131

cám ơn bài viết. bài viết của bạn rất hay và hữu ích mà^^~!~

nếu bạn viết sách thì khi nào hoàn thành mình cũng muốn xin 1 quyển. hihi

hehe

Chia tay bình minh

#5 Thành viên tích cực

chiga9x 

Trả lời cùng với trích dẫn 16­04­2011,  05:58 PM

Ngày gia nhập:

Nơi ở:

Bài viết:

01 2011

­Mountain­ 768

 hướng dẫn thao tác string variable  kiểu dữ liệu string

@anh cà rem vs @chi : Cám ơn mọi người đã ủng hộ mình

mà mình thì đâu đủ khả năg để viết sách hihi

à. mà cứ yên tâm là tới mùa quýt mình sẽ viết xong

Nhớ một người,

Là yêu hay là thích   ?

#6 Thành viên nhiệt tình

beautifulsoul84hung 

Trả lời cùng với trích dẫn 16­04­2011,  09:27 PM

Ngày gia nhập:

Nơi ở:

Bài viết:

12 2009 The country of happiness 182

sử dụng string class rất tiện lợi trong các contest. Và nếu bạn học theo trình tự C ­> C++ ­> java thì việc đọc về class string trong C++ sẽ giúp

bạn tiếp cận tự nhiên với String trong java

#7 Thành viên nhiệt tình

tiendaotd 

 Nguyên bản được gửi bởi Wazi Armstrong 

Ôi skill của mình đã đạt đến hàng tuyệt đỉnh

Không chỉ ăn, tắm, đi lại có thể code

Mà giờ đã mình có thể code cả khi ngủ. Code tạm vào buffer của não, lúc nào dậy chỉ việc viết ra một cách trôi chảy không lưỡng lự. 

PS: Nếu ngủ dài rảnh rảnh có thể debug luôn, dậy chỉ việc build ?

 Nguyên bản được gửi bởi vietanh8286 

Lập trình viên giỏi là lập trình viên có vợ

Trả lời cùng với trích dẫn 22­11­2012,  10:44 AM

Ngày gia nhập:

Nơi ở:

Bài viết:

02 2012 Thủ Đức 19

Hjx.mình cũng đang nghiên cứu về thằng khỉ này.lúc đầu mình nhập bằng cin >> str; ko có đc nên bực quyết định đi tìm hiểu về nó.may mà có

bài bác nhỉ.thank rất nhìu về 1 bài viết có ích

#8 Thành viên mới

SolitaryWolf 

Trả lời cùng với trích dẫn 24­03­2013,  09:04 AM

Ngày gia nhập: 11 2010

#9

Trang 6

27/3/2015 C++ Tutorial: hướng dẫn thao tác string variable  kiểu dữ liệu string

http://diendan.congdongcviet.com/threads/t53138::huong­dan­thao­tac­string­variable­kieu­du­lieu­string.cpp 6/7

« Đề tài liền trước | Đề tài liền sau »

Cảm ơn bạn về tài liệu này ! nhưng cho mình hỏi sự khác nhau giữa cin.getline và getline được ko bạn ? mình vẫn chưa hiểu về điều này 

Thành viên mới baylkun 

Trả lời cùng với trích dẫn 25­03­2013,  01:38 AM

Ngày gia nhập:

Bài viết: 03 20132

getline là một hàm độc lập, được khai ở trong <string>, hay nói cách khác, là được getline sẽ làm việc trên 1 string, nên muốn dùng hàm getline,

thì bạn phải khai báo #include<string> ở đầu

1. #include<iostream>

2. #include<string>

3.   

4. using namespace std;

5.   

6. int main()

7. {

8.      string name;

9.      cout << "name: ";

10.      getline(cin, name)

11.      cout << name << endl;

12.      return ;

13. }

cin.getline là một member ở trong istream, và cách bạn làm việc với nó như kiểu làm việc với string trong C, aka làm việc trên mảng

1. #include<iostream>

2.   

3. using namespace std;

4.   

5. int main()

6. {

7.      char name[255]

8.      cout << "Enter a string: ";

9.      cin.getline(name, 255)

10.   

11.      cout << "You typed " << name << endl;

12. }

Ở cả 2 cách trên thì đều cho ra một kết quả, nhưng bản thân mình thích làm việc với <string> hơn là bên C style. 

#10 Thành viên mới

theunloved 

Trả lời cùng với trích dẫn

Trang 1 trên tổng số 2 1 2 Cuối cùng

Quick Navigation  Thủ thuật, Tutorials và Mã nguồn C/C++/C++0x  Top

Plugin xã hội của Facebook

Viết bình luận

Phạm Mạnh ·   Những Người bình luận Hàng đầu

tks ban, bat dau thich hoc C++ sau khi doc topic nay ♥

Trả lời · Thích ·  1 · Theo dõi bài viết này · 25 Tháng 1 2014 lúc 13:28

làm thế nào chuyển String o[] sang String hoặc byte[].

Method String.CompareTo(string strB) trong C# thực hiện so sánh 2 chuỗi như thế nào?

Bài tập C++ tạo toán tử ==trong lớp string với tham số là string, char

Lập trình C++ sử dụng string trong C++. Lỗi C2146: syntax error : missing ';' before identifier tại string string_rep()const;?

string và String khác nhau như thế nào?

lớp string c++, sử dụng string

Các đề tài tương tự

Tags của đề tài này

Trang 7

27/3/2015 C++ Tutorial: hướng dẫn thao tác string variable  kiểu dữ liệu string

http://diendan.congdongcviet.com/threads/t53138::huong­dan­thao­tac­string­variable­kieu­du­lieu­string.cpp 7/7

­­ Computer Style Liên hệ chúng tôi Cộng đồng C Việt Archive Top

Toàn bộ thời gian tính theo múi GMT +7. Bây giờ là 02:12 PM

­ Sáng lập bởi Kevin Hoang @2006

­ Nguồn đã được cung cấp bởi vBulletin® 4.2.2

­ Bản quyền nguồn ©2015 vBulletin Solutions, Inc

­ Sử dụng và phát triển bởi Cộng đồng C Việt®: 2006 ­ 2014

lớp string c++, sử dụng string

View Tag Cloud

Bạn không thể gửi đề tài mới

Bạn không thể gửi bài trả lời

Bạn không thể gửi các đính kèm

Bạn không thể chỉnh sửa bài viết của bạn

Tìm hiểu luật lệ tham gia diễn đàn

BB code: On Mặt cười: On [IMG] code: On [VIDEO] code is On HTML code: Off Quyền hạn của bạn

Ngày đăng: 04/11/2015, 16:08

TỪ KHÓA LIÊN QUAN

w