Cách chuẩn hóa chuỗi - xóa khoảng trắng thừa

Em đang học bài chuỗi nhưng không biết cách xóa khoảng trắng thừa ở câu,

Đây là code em viết xóa khoảng trắng ở đầu nhưng … sai mất tiêu. Mọi người chỉ giúp em.

std::string xoa_KhoangTrang_ODau (std::string &str)
{
	int i = 0;
	while (str[i] == ' ') 
	{
		str[i] = str[i + 1];
		i++;
	}
	return str;
}

Không liên quan đến code nhưng anh nghĩ sửa tên

thành thế này hay hơn

std::string xoa_khoang_trang_thua(std::string &str)

Sai cụ thể như thế nào vậy em?

P/S: Em xem cái markdown để post bài nhé:

Nó lỗi thế này này anh

Em đang tập code về chuỗi, nhưng em tìm ko thấy tài liệu chuỗi C++ rõ ràng.

mình hướng dẫn bạn cách giải quyết ! đầu tiên bạn cần có 1 mảng với số lượng phần tử. sau đó bạn cần có vị trí xoá ( ở đây vị trí là nơi có khoảng trắng ). sau đó bạn duyệt sang một mảng mới!
gợi ý : tạo hàm nhập mảng, xuất mảng , vị trí ( khoảng trắng ), duyệt thành mảng mới. bạn cứ tìm hiểu nếu mà k bik thì chiều mình rảnh sẽ post code hướng dẫn bạn làm chi tiết!
bạn cũng có thể dùng con trỏ để xoá nhé!

Anh nghĩ em nên sử dụng std::string::erase này để xóa khoảng trắng

// string::erase
#include <iostream>
#include <string>

int main ()
{
  std::string str ("This is an example sentence.");
  std::cout << str << '\n';
                                           // "This is an example sentence."
  str.erase (10,8);                        //            ^^^^^^^^
  std::cout << str << '\n';
                                           // "This is an sentence."
  str.erase (str.begin()+9);               //           ^
  std::cout << str << '\n';
                                           // "This is a sentence."
  str.erase (str.begin()+5, str.end()-9);  //       ^^^^^
  std::cout << str << '\n';
                                           // "This sentence."
  return 0;
}

Để kiểm tra khoảng trắng anh nghĩ em nên dùng hàm isspace

str.erase (10,8);

tại vị trí thứ 10 xoá đi 8 ký tự bao gồm 1 khoảng trắng + 7 ký tự của example :smiley: cái này mới bik lun

@Honey_moon có thể giải thử bài này dùng std::string::erase không?

được chứ anh! e ko cần xài hàm này e vẫn xoá đc ! nhưng ko có mạnh mẽ bằng cái này thích xoá ở đâu là xoá! e xoá kiểu tìm phần tử trong mảng! mình đặt yêu cầu thì tại vị trí là x ( thoả đk )bất kỳ ta đều xoá đc !

1 Like

Vậy hãy làm bài này đi, sử dụng std::string::erase, anh khuyến khích sử dụng STL (Standard Library) để làm C++.

Có lợi cho em đấy :+1:

thao tác của mảng gồm
1> xoá thêm phần tử
2> tách mảng, gộp mảng
3> sắp xếp mạng
4>nhập mảng, xuất mảng
5> cập nhật mảng
e nắm được hết rồi! a thích thì nhào vô :wink:
đợi chiều giờ e đang ở chỗ làm! ko có máy tính đâu

1 Like

Erase là phương thức gì vậy anh, anh cho em xin tài liệu mấy cái phương thức trong thư viện mà anh nói đi, trong tài liệu em tìm được ko có mấy cái phương thức này. Bài này em nhìn vào ko hiểu lun á @ltd

@Honey_moon nếu có thời gian thì giúp em code 2 loại mà anh nói nha.

Em bấm vào cái link anh để trong post này nhé, anh có dẫn tới trang tài liệu

ai làm thử bài chuẩn hóa bằng std::string::erase chưa ? em đọc mà không hiểu nó viết gì :3 , nếu ai làm được up code cho em xem với

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?