01/10/2018, 00:23

Phương thức tìm kiếm find trong C++?

Cho 1 chuỗi: Hom nay troi kha dep
Sử dụng phương thức find tìm kiếm chữ H và h và thay nó thành kí tự ‘k’
chuỗi kết quả là: Kom nay troi kka dep

code của em

void ThayDoi(string &s)
{
	int vitri = s.find('H');

	while(vitri != -1)
	{
		s.replace(s.begin() + vitri ,s.begin() + vitri + 1, "k");
		vitri = s.find('H', vitri + 1);
	}
}

Em muốn hỏi là tìm cả chữ h thì cách ngắn gọn nhất là gì?
Em xin chân thành cảm ơn!
Chúc mọi người một ngày làm việc vui vẻ ạ!

*grab popcorn* viết 02:33 ngày 01/10/2018

Có hàm std::replace_if trong algorithm có thể giúp

bool isH(char c) {
	return c=='h' || c=='H';
}

int main(void) {
	string abc = "hhhhahsdfhasdf h asdf lkhasdf ASf h HHHH";
	replace_if(abc.begin(), abc.end(), isH, 'k');
	cout << abc;
	return 0;
}
Nguyễn Tuấn Nam viết 02:26 ngày 01/10/2018

điều kiện bắt dùng find bác ạ :’(

Nguyễn Tuấn Nam viết 02:29 ngày 01/10/2018

à em cảm ơn bác nhé ^^ thông não quá ^^

*grab popcorn* viết 02:26 ngày 01/10/2018

Nếu bắt buộc dùng hàm find thì với mình thì mình thấy cách trên tốt nhất r
Hóng cách giải tốt hơn

Nguyễn Tuấn Nam viết 02:28 ngày 01/10/2018

Vâng. em tìm hiểu hoài hàm find mà không đi tìm hiểu hàm thay thế

Nguyễn Tuấn Nam viết 02:26 ngày 01/10/2018

Sư huynh cho em hỏi là tham số truyền vào hàm replace_if(…, isH,…); chỗ isH tại sao isH lại không truyền vào tham số là 1 ký tự char??? em vẫn chưa hiểu lắm phần isH được truyền vào hàm replace_if.
Mong sư huynh giải đáp.
Em xin cảm ơn ạ

*grab popcorn* viết 02:36 ngày 01/10/2018

À tham số thứ 3 của replace_if yêu cầu truyền vào là một hàm kt xem giá trị đó có cần phải thay với tham số thứ 4 hay không.
Vì bạn cần là muốn thay ‘h’ hoặc ‘H’ nên mình viết vậy để đỡ gọi 2 hàm.

Tuy nhiên dùng 2 hàm std::replace thì cũng đc.
Thì khi đó tham số thứ 3 = giá trị muốn được replace.
http://www.cplusplus.com/reference/algorithm/replace/

Nguyễn Tuấn Nam viết 02:28 ngày 01/10/2018

Dạ em hiểu rồi ạ cảm ơn sư huynh nhiều ạ

Bài liên quan
0