01/10/2018, 00:22

Chuyển string sang mảng char trong C++?

Các sư huynh cho em nhờ chút ạ.
Em có hàm

string VietHoa(string s)
{
	char* c = new char[s.size()];
	copy(s.begin(), s.end(), c);
	c[s.size()] = '';

	s = strupr(c);

	delete [] c;
	c = NULL;
	
	return s;
}

Đầu vào là 1 chuỗi string và phải in ra chuỗi string có dạng viết hoa tất cả các ký tự. (bắt buộc sử dụng strupr) em đã thực hiện chuyển string s sang mảng char. Vậy em muốn hỏi là cách xử lý của em như trên nó báo lỗi vì việc giải phóng bộ nhớ kia. Nếu bỏ nó đi thì không sao nhưng khi cấp phát động phải giải phóng bộ nhớ.
Cách xử lý triệt để là như thế nào ạ? Ai có thể gợi ý giúp em được không ạ?
Em xin chân thành cảm ơn!
Chúc các sư huynh một ngày vui vẻ ạ!

Pete Houston viết 02:25 ngày 01/10/2018

char* c = new char[s.size()];

char* c = new char[s.size() + 1];
Nguyễn Tuấn Nam viết 02:35 ngày 01/10/2018

Ôi cảm ơn sư huynh nhiều lắm hết lỗi rồi cơ mà cho em hỏi tại sao phải khai báo cộng thêm 1 ạ???

Nguyễn Xuân Phúc viết 02:32 ngày 01/10/2018

c[s.size()] = ‘\0’;

ngay bản thân trong code của bạn cũng đã trả lời cho câu hỏi đó rồi
muốn dùng phẩn tử chỉ số i thì phải đảm bảo mảng có kích thước lớn hơn i

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

dạ em cảm ơn sư huynh nhiều ạ ^^

Bài liên quan
0