Chương trình này nhằm thay thế một từ cụ thể bằng các dấu sao trong chuỗi bằng cách sử dụng mã C++. Hàm thiết yếu của lớp vector và string đóng vai trò then chốt để đạt được kết quả mong muốn. Thuật toán như sau:
Thuật toán
BẮT ĐẦU Bước 1: Nhập chuỗi Bước 2: Tách chuỗi thành các từ và lưu vào mảng danh sách Bước 3: Lặp qua vòng lặp đến độ dài và đưa dấu sao vào biến Bước 4: Duyệt mảng bằng vòng lặp foreach và so sánh chuỗi với từ cần thay thế Bước 5: In kết quả KẾT THÚC
Dưới đây là mã được viết dựa trên thuật toán trên. Ở đây, phương thức strtok() của chuỗi tách chuỗi và trả về danh sách mảng kiểu vector.
Ví dụ
#include <cstring>
#include <iostream>
#include <vector>
#include <string.h>
// phương thức tách chuỗi
std::vector<std::string> split(std::string str, std::string sep) {
char* cstr = const_cast<char*>(str.c_str());
char* current;
std::vector<std::string> arr;
current = strtok(cstr, sep.c_str());
while (current != NULL) {
arr.push_back(current);
current = strtok(NULL, sep.c_str());
}
return arr;
}
int main() {
std::vector<std::string> word_list;
std::cout << "Chuỗi trước khi thay thế::" << "Hello ajay yadav ! you ajay you are star" << std::endl;
std::cout << "Từ cần thay thế::" << "ajay" << std::endl;
word_list = split("Hello ajay yadav ! you ajay you are star", " ");
std::string result = "";
// Tạo chuỗi che giấu là dấu sao
// văn bản "*" có độ dài bằng từ cần che giấu
std::string stars = "";
std::string word = "ajay";
for (int i = 0; i < word.length(); i++)
stars += '*';
// Duyệt qua danh sách các từ đã tách
int index = 0;
for (std::string i : word_list) {
if (i.compare(word) == 0)
// thay đổi từ bị che giấu thành
// chuỗi dấu sao đã tạo
word_list[index] = stars;
index++;
}
// nối các từ lại
for (std::string i : word_list) {
result += i + ' ';
}
std::cout << "kết quả::" << result;
return 0;
}
Như thấy trong mã trên, toàn bộ mã thao tác chuỗi được gói gọn trong phương thức retrieveChar(), sau đó được gọi trong hàm main() để thực thi.
Kết quả
Chuỗi trước khi thay thế::Hello ajay yadav ! you ajay you are star Từ cần thay thế::ajay Kết quả::Hello **** yadav ! you **** you are star