30/09/2018, 16:11

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;
}
Nguyễn Minh Dũng viết 18:25 ngày 30/09/2018

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

xoa_KhoangTrang_ODau

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

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

sai mất tiêu

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

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

Làm sao để có thể hiển thị syntax highlighting bằng markdown? Các bạn phải đánh dấu ``` như ví dụ dưới đây Chú ý, dấu ``` được tạo ra bởi nút nằm bên trái số 1 trên bàn phím, nút này sẽ là ~ khi bấm giữ Shift Ví dụ cho C Nội dung: ``` void main() { } ``` Và đừng quên ``` ở cuối Kết quả void main() { } Ví dụ cho Pascal Nội dung: ``` Program HelloWorld; Begin WriteLn('Hello world!') {no ";" is required after the last statement of a block - adding one adds a "null stateme…
Nhánh Lan Rừng viết 18:21 ngày 30/09/2018

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.

Thực tế khắc nghiệt viết 18:17 ngày 30/09/2018

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é!

Nguyễn Minh Dũng viết 18:22 ngày 30/09/2018

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

Thực tế khắc nghiệt viết 18:19 ngày 30/09/2018
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 cái này mới bik lun

Nguyễn Minh Dũng viết 18:17 ngày 30/09/2018

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

Thực tế khắc nghiệt viết 18:19 ngày 30/09/2018

đượ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 !

Nguyễn Minh Dũng viết 18:15 ngày 30/09/2018

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

Thực tế khắc nghiệt viết 18:14 ngày 30/09/2018

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ô
đợi chiều giờ e đang ở chỗ làm! ko có máy tính đâu

Nhánh Lan Rừng viết 18:15 ngày 30/09/2018

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.

Nguyễn Minh Dũng viết 18:16 ngày 30/09/2018

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

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); …
trần đại hiệp viết 18:19 ngày 30/09/2018

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

Bài liên quan
0