6/3/15

Tổng quan về kiểu string trong C++

1. string là kiểu dữ liệu mới được định nghĩa sẵn trong C++, nó có nhiều ưu điểm vượt trội và giúp tránh được những phiền phức so với chuỗi kiểu char* của C.

2. Trong C++, bạn vẫn có thể dùng kiểu char* nếu muốn. Có thể chuyển từ kiểu string sang chuỗi char* bằng phương thức c_str()

3. Cần khai báo #include<string> để có thể sử dụng đầy đủ tiện ích của string.

4. string có các phép +, += để nối chuỗi thay vì dùng hàm trong thư viện string.h như kiểu char*

5. Các hàm trong thư viện string.h (strlen, strcmp, strlwr,... ) sẽ không sử dụng được với string.

6. Có thể so sánh trực tiếp 2 chuỗi string: ==, !=, >, >=, <, <=. Nguyên tắc so sánh giống hệt như khi dùng hàm strcmp().

7. Dùng phương thức length() để lấy độ dài chuỗi, dùng phép lấy chỉ số [] để lấy từng phần tử của chuỗi.
Ví dụ:
string a = "ABCDE";
cout<< a.length();
cout<< a[2];
8. Dùng phép gán ( = ) để gán trực tiếp biến string bằng một chuỗi hoặc một biến string khác mà không cần copy.

9. Biến kiểu string có thể xuất bằng cout<< và nhập đến khi gặp khoảng trắng bằng cin>>.

10. Dùng getline(cin, <tên biến chuỗi>) để nhập chuỗi có khoảng trắng.
Ví dụ:
string a;
getline(cin, a);
cout << a;

11. string thực chất là một vector<char> có bổ sung thêm một số phương thức và thuộc tính. Do đó, nó có toàn bộ tính chất của một vector.

12. Dùng phương thức substr(<vị trí>, <số ký tự>) để lấy chuỗi con.
Ví dụ:
string a = "ABCDEF";
cout << a.substr(1, 3);
//Kết quả: BCD

13. Dùng phương thức insert() để chèn một chuỗi vào giữa chuỗi khác. Có rất nhiều cách để làm điều này:
str.insert(int pos, char * s); //chèn chuỗi kiểu char* vào vị trí pos
str.insert(int pos, string s); //chèn chuỗi s vào vị trí pos
str.insert(int pos, int n, char ch); //chèn n lần ch vào vị trí pos

14. Dùng phương thức erase() để xóa một phần chuỗi.
str.erase(int pos, int n); //xóa n ký tự từ vị trí pos
str.erase(int pos); //xóa từ vị trí pos đến cuối chuỗi

15. Có thể dùng phương thức compare() để so sánh 2 chuỗi nếu không muốn dùng các toán tử quan hệ.
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;

16. Dùng phương thức find() để tìm một chuỗi khác xuất hiện trong chuỗi. Trả về vị trí xuất hiện đầu tiên nếu tìm thấy và -1 nếu không tìm thấy.
str.find(int ch, int pos = 0); //tìm ký tự ch kể từ pos đến cuối
str.find(char *s, int pos = 0); //tìm chuỗi kiểu char* từ pos đến cuối
str.find(string& s, int pos = 0); //tìm chuỗi s kể từ pos đến cuối

17. Dùng phương thức replace() để thay thế một đoạn con trong chuỗi ban đầu.
str.replace(int pos, int nchar, char *s);
str.replace(int pos, int nchar, string s);
str.replace(int pos, int nchar, int n, int ch);

20 nhận xét:

  1. cho mình hỏi trong c++ có hàm nào có thể tách từng từ trong chuỗi như hàm strtok() trong c ko :v

    Trả lờiXóa
    Trả lời
    1. tự code hàm tách từ thôi bạn ak ( mình tìm cũng không thấy ) ..:3

      Xóa
    2. à mình có thuật toán r :D kiếm trên stackoverflow :D dùng thư viện sstream :D

      Xóa
    3. chuyển thành chuỗi dạng c = hàm .c_str() rồi dùng strtok bình thường

      Xóa
    4. chuyển thành chuỗi dạng c = hàm .c_str() rồi dùng strtok bình thường

      Xóa
    5. dùng istringstream nha bạn, nhanh và gọn hơn :)

      Xóa
  2. ban nao pic sap xep 2 chuoi tăng dan ma dung kieu string k?

    Trả lờiXóa
    Trả lời
    1. cứ so sánh s1 vs s2 như biến bt thôi :v s1>s2, s1<s2, s1==s2,...

      Xóa
  3. mình muốm xin templates này về vọc thử đc k bạn. cám ơn bạn nhiều.

    Trả lờiXóa
  4. Cho mình hỏi là làm thế nào chuyển STRING sang INT trong c++ @@

    Trả lờiXóa
  5. Cho mình hỏi là làm thế nào chuyển STRING sang INT trong c++ @@

    Trả lờiXóa
    Trả lời
    1. ký tự ms chuyển sang số dc nhé bạn @@!

      Xóa
    2. Nặc danh18:47 22/12/16

      http://stackoverflow.com/questions/7663709/convert-string-to-int-c
      tham khảo đây nè bạn

      Xóa
  6. cách copy một chuỗi sang một chuỗi khác cùng kiểu string làm thế nào ạ
    ??

    Trả lờiXóa
  7. phương thức find trả về vị trí xuất hiện đầu tiên khi tìm thấy mà mình muốn dùng cái vị trí xuất hiện đầu tiên đó làm điều kiện thì phải ghi như thế nào vậy ạ?

    Trả lờiXóa
  8. phương thức find trả về vị trí xuất hiện đầu tiên khi tìm thấy mà mình muốn dùng cái vị trí xuất hiện đầu tiên đó làm điều kiện thì phải ghi như thế nào vậy ạ?

    Trả lờiXóa
  9. khi inset co thay doi kich co ngay sau khi chen hay xoa khong

    Trả lờiXóa