01/10/2018, 01:03

Gặp lỗi "lạ" khi xóa hết các khoảng trắng có trong chuỗi cho trước

Hi mọi người,

Tình hình là mình đang làm 1 hàm xóa hết các khoảng trắng có trong 1 chuỗi cho trước.
Bình thường, ai cũng đều biết cái thuật toán duyệt chuỗi, nếu thấy khoảng trắng thì erase đi.
Mình có tham khảo trên mạng và làm bài này theo kiểu Erase-remove idiom. Tức là chúng ta sẽ dồn hết các khoảng trắng có trong chuỗi về cuối chuỗi và tiến hành erase.
Đây là code của mình: http://codepad.org/KqMvT4yp

void DeleteSpace(std::string &str)
{
	str.erase(std::remove(str.begin(), str.end(), " "), str.end());
}

int main()
{
	std::string str = "Hello World! I am an iron man";
	DeleteSpace(str);
	std::cout << str << std::endl;
	system("pause");
	return 0;
}

Nhưng khi chạy lên thì nó báo lỗi, không phải ở file.cpp đang code mà ở thư viện algorithm ??

VS 2015 báo lỗi:

CodeBlocks báo lỗi:

Ai biết lỗi này giúp mình nhé, xin cảm ơn !

Đỗ Mạnh Hà viết 03:15 ngày 01/10/2018

Hi bạn!

Bạn thay dấu

" "

trong phần gọi hàm remove() tham số thứ 3 thành

' '

là được nhé! (Bạn đang sai ở chỗ truyền nhầm kiểu dữ liệu cho hàm remove() nên nó báo lỗi failure to convert)

Hy vọng sẽ hữu ích!

Người bí ẩn viết 03:05 ngày 01/10/2018

Cảm ơn anh nhé.
Lúc gặp lỗi vội vàng post lên mà không để ý cặp dấu ""

Đỗ Mạnh Hà viết 03:14 ngày 01/10/2018

Uhm. Làm với C/C++ phải dò từng ký tự một không có là đếch hiểu nó bị làm sao?

Bài liên quan
0