Bỏ dấu tiếng việt trong C++

By | 13/05/2018

Bắt nguồn từ bài viết này, nay mình có việc phải bỏ dấu tiếng Việt trong C++ nên share  thêm đoạn code bỏ dấu tiếng Việt vẫn là sử dụng hình thức replace.

Chú ý: Để biên dịch được đoạn code dưới đây, bạn cần trình biên dịch hỗ trợ C++ 11 trở lên. Đoạn code dưới đây được test với trình biên dịch Visual Studio 2017

Bỏ dấu tiếng Việt trong C++

std::wstring RemoveVietnameseTone(const std::wstring& text) {
  std::wstring result(text);
  result = std::regex_replace(result, std::wregex(L"à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ|/g"), L"a");
  result = std::regex_replace(result, std::wregex(L"À|Á|Ạ|Ả|Ã|Â|Ầ|Ấ|Ậ|Ẩ|Ẫ|Ă|Ằ|Ắ|Ặ|Ẳ|Ẵ|/g"), L"A");
  result = std::regex_replace(result, std::wregex(L"è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ|/g"), L"e");
  result = std::regex_replace(result, std::wregex(L"È|É|Ẹ|Ẻ|Ẽ|Ê|Ề|Ế|Ệ|Ể|Ễ|/g"), L"E");
  result = std::regex_replace(result, std::wregex(L"ì|í|ị|ỉ|ĩ|/g"), L"i");
  result = std::regex_replace(result, std::wregex(L"Ì|Í|Ị|Ỉ|Ĩ|/g"), L"I");
  result = std::regex_replace(result, std::wregex(L"ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ|/g"), L"o");
  result = std::regex_replace(result, std::wregex(L"Ò|Ó|Ọ|Ỏ|Õ|Ô|Ồ|Ố|Ộ|Ổ|Ỗ|Ơ|Ờ|Ớ|Ợ|Ở|Ỡ|/g"), L"O");
  result = std::regex_replace(result, std::wregex(L"ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ|/g"), L"u");
  result = std::regex_replace(result, std::wregex(L"Ù|Ú|Ụ|Ủ|Ũ|Ư|Ừ|Ứ|Ự|Ử|Ữ|/g"), L"U");
  result = std::regex_replace(result, std::wregex(L"ỳ|ý|ỵ|ỷ|ỹ|/g"), L"y");
  result = std::regex_replace(result, std::wregex(L"Ỳ|Ý|Ỵ|Ỷ|Ỹ|/g"), L"y");
  result = std::regex_replace(result, std::wregex(L"đ"), L"d");
  result = std::regex_replace(result, std::wregex(L"Đ"), L"D");
  return result;
}

Download:
remove_vietnamese_tone_main.cc

Hy vọng sẽ giúp ích được cho nhiều người.

Nếu đoạn mã trên có bug hoặc có thể cải thiện, hãy comment xuống dưới giúp mình, xin cảm ơn.

136 thoughts on “Bỏ dấu tiếng việt trong C++

  1. Premiumzug

    from lat. manus – “hand” and scribo – “I write”) ]

    Reply
  2. Generationdxz

    antiquities. These are the Egyptian papyri

    Reply
  3. Holographicnem

    written on the parchment was scratched out

    Reply
  4. WILDKATcvv

    book about the chess of love “, created by

    Reply
  5. Sanderpkz

    from lat. manus – “hand” and scribo – “I write”) ]

    Reply
  6. Edelbrockqlb

    “Julia’s Garland” (fr. Guirlande de Julie)

    Reply
  7. Holographicjsb

    Since manuscripts are subject to deterioration

    Reply
  8. hdfilmcehennemi

    Duke Anderson (Sean Connery) sayısız kasa soygunundan 10 yıl içeride yattıktan sonra salıverilir. Ancak hiç zaman kaybetmeden bir sonraki işini planlar. New York’un doğu yakasındaki bir apartmana milyon dolarlık soygun.. Duke ve tayfası soyguna başlamak üzereyken, her hareketleri bir grup dedektif tarafından kayda alınır. Kayıtların ortaya çıkmasıyla, New York 5. Cadde, polis ve Duke’un tayfası arasında nefes kesici bir aksiyona sahne olacaktır. Francesco Maignan

    Reply
  9. hdfilmcehennemi

    Lucy Cola(Natalie Portman), uzayda astronot olarak görev alan bir kadındır. Ancak Lucy, görevden dönmesinin ardından yaşama çok kolay uyum sağlayamaz. Hayatını değiştiren bu uzay deneyimi, algılarında farklı sonuçlar doğurur. Lucy, yavaş yavaş gerçeklik ile olan bağlarını koparmaya ve kocasından uzaklaşmaya başlar. Bu süreçte Lucy, merakını cezbeden başka bir astronot olan Mark Goodwin ile ilişki yaşamaya başlar. İkilinin hızlı başlayan ilişkisi, kısa sürede ilk darbeyi alır. Lucy, Mark’ın niyetinin, Lucy’nin sıradaki uzay yolculuğunu baltalamak olduğundan şüphelenmeye başlar. Uzaya bir daha çıkabilmek için her şeyi göze almaya hazır olan Lucy, bu uğurda oldukça tehlikeli adımlar atmaya karar verecektir. Lucy in the Sky izle Rhett Kobylski

    Reply
  10. hdfilmcehennemi

    Oyunculuğuna hayran olduğumuz Ethan Hawke’un yönettiği yeni filminin kahramanı bir country-blues şarkıcısı, ama hiç de bir filmin başkahramanı gibi değil aslında: Amerikan taşrasından gelmiş iri yarı, aksak, neredeyse ayyaş, konuştuğunda söylediklerinin çoğu anlaşılmayan bir adam Blaze Foley. Bunlar bir yana, gitarı eline aldığında yazdığı yalnızlık ve özlem şarkılarıyla herkesin hayranlığını kazanıyor. Ne var ki şöhreti yükselirken, özellikle öfkesine hakim olamadığı için Blaze’in yıldızı git gide daha az parlıyor. Sundance’te ilk gösterimini yapan Blaze, Merle Haggard ve Willie Nelson gibi yıldızlar çıkaran Teksas Kanunsuz Müzik hareketinin perde arkasındaki kahramanlarından, “If I Could Only Fly” ve “Election Day” gibi şarkıların yaratıcısı Blaze Foley’nin hayatını anlatıyor. Blaze izle, Blaze film izle, Blaze Türkçe altyazılı izle Wilmer Popiolek

    Reply
  11. Staci Bay

    Ahaa, its good dialogue on the topic of this piece of writing here at this webpage,
    I have read all that, so now me also commenting at this place.

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *