C++ STL: Sử dụng String

Hi. chào mừng các bạn đến với chủ đề: lập trình c++ thư viện stl.

Hôm nay chúng ta tìm hiểu về string trong c++

std::string là một lớp được sử dụng để lưu trữ và xử lý các chuỗi ký tự.

1. Gán chuỗi cho string.
std::string str1 = "Hello everybody";
std::string str2 = "Welcome to phattrienphanmem123az.com";
2. Lấy length của chuỗi, lấy ký tự đầu, ký tự cuối của chuỗi, ký tự tại vị trí bất kỳ.
int length = str1.length();
char ch1 = str1.front();
char ch2 = str1.back();
char ch3 = str1.at(1);
3. Ghép chuỗi 2 cho chuỗi 1, thay thế nội dung chuỗi 2 cho chuỗi 1.
str1.append(str2);
str1.assign(str2)
4. Xóa hoàn toàn một chuỗi, đẩy ký tự vào, ra khỏi chuỗi.
str1.erase();
str.push_back("a");
str.pop_back();
5. So sánh hai chuỗi.
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <string>
#include <vector>

void main()
{
 std::string str1 = "Hello everybody";
 std::string str2 = "Welcome to phattrienphanmem123az.com";
 std::string str3 = "Hello everybody";
 std::string str4 = "Hello";

 int ret1 = str1.compare(str3);
 int ret2 = str1.compare(str2);
 int ret3 = str1.compare(str4);
 _getch();
 return ;
}

+ str1 và string3 giống hệt nhau lên => ret1 = 0

+ str1 có số lượng ký tự nhỏ hơn str2 => ret1 < 0;

+ str1 có số ký tự lớn hơn str4 => ret1 > 0

 

6. Chèn chuỗi vào vị trí mong muốn.
std::string str1 = "Hello everybody";
std::string str2 = "Welcome to phattrienphanmem123az.com";
std::string str3 = "Hello everybody";
std::string str4 = "Hello";

str1.insert(0, str2);
str1.insert(2, str2, 3, 4);

+ Chèn chuỗi 2 bắt đầu tại vị trí 0 của chuỗi 1.

+ Lấy 4 ký tự của chuỗi 2 bắt đầu từ ký tự số 3 và chèn 4 ký tự đó vào chuỗi 1 bắt đầu từ vị trí 2 của chuỗi 1.

 

7. Tìm kiếm trong string.

+ Hàm std::string.find: Cho phép tìm kiếm chuỗi 2 có mặt trong chuỗi 1 hay không, trả lại vị trí bắt đầu tìm được

std::string str1 = "Hello everybody";
std::string str2 = "every" ;

int n = str1.find(str2);

n = 6

+ Hàm std::string.find_first_of: Tìm ra ký tự đầu tiên trong chuỗi 1 mà ký tự này là 1 trong số các ký tự của chuỗi 2.

std::string str1 = "Hello everybody";
std::string str2 = "every" ;
int n = str1.find_first_of(str2);

n = 1, vi nó tìm thấy chữ e là chữ đầu tiên trong chuỗi 1 có mặt ở chuỗi 2.

+ Hàm std::string.find_first_not_of. Ngược lại với hàm trên, nó sẽ tìm ký tự đầu tiên mà không thuộc nhóm ký tự chuỗi 2.

std::string str1 = "everybody";
std::string str2 = "every" ;

int n = str1.find_first_not_of(str2);

n = 5.. vì chữ b là ký tự đầu tiên nó tìm được trong chuỗi 1 mà ko thuộc chuỗi 2.

+ Tương tự với hai hàm : find_last_of, find_first_not_of

Nó sẽ tìm ký tự cuối cùng của chuỗi 1 thuộc/ko thuộc ở chuỗi 2.

 

8. Tách chuỗi bởi một ký tự, ví dụ space
unsigned int SplitString(const std::string &str_input, 
                         std::vector<std::string> &ret_list, char ch)
{
  unsigned int pos = str_input.find(ch);
  unsigned int init_pos = 0;
  ret_list.clear();

  while(pos != std::string::npos)
  {
    std::string str_sub = str_input.substr(init_pos, pos - init_pos + 1);
    ret_list.push_back(str_sub);
    init_pos = pos + 1;
    pos = str_input.find(ch, init_pos);
  }

  std::string last_sub = str_input.substr(init_pos, 
                                          std::min(pos, str_input.size()) - init_pos + 1);
  ret_list.push_back(last_sub);
  return ret_list.size();
}

void main()
{
  std::vector<std::string> ret_arr;
  SplitString( "Welcome to phattrienphanmem123az", ret_arr, ' ' );

  _getch();
  return ;
}

 

One thought on “C++ STL: Sử dụng String

  • 20 December, 2017 at 7:21 am
    Permalink

    Hay,rất bổ ích…Cảm ơn ad

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.