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 127/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::huongdanthaotacstringvariablekieudulieustring.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 15042011, 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 227/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::huongdanthaotacstringvariablekieudulieustring.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 327/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::huongdanthaotacstringvariablekieudulieustring.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 427/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::huongdanthaotacstringvariablekieudulieustring.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 15042011, 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 15042011, 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 15042011, 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 527/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::huongdanthaotacstringvariablekieudulieustring.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 16042011, 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 16042011, 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 16042011, 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 22112012, 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 24032013, 09:04 AM
Ngày gia nhập: 11 2010
#9
Trang 627/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::huongdanthaotacstringvariablekieudulieustring.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 25032013, 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 727/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::huongdanthaotacstringvariablekieudulieustring.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