Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Memangkas Ruang Utama dan Mengekor daripada Rentetan dalam C ?
Mengalih keluar Ruang Menuju dan Mengekor daripada Rentetan
Memangkas ruang hadapan dan belakang daripada objek rentetan dalam C ialah tugas biasa. Kelas rentetan tidak mempunyai kaedah asli untuk mencapai ini, tetapi ia boleh dicapai melalui gabungan teknik manipulasi rentetan.
Untuk mengalih keluar ruang hadapan dan belakang, fungsi find_first_not_of dan find_last_not_of boleh digunakan untuk mengenal pasti yang pertama dan terakhir. aksara bukan ruang putih dalam rentetan. Setelah kedudukan ini ditentukan, fungsi substr boleh digunakan untuk mengekstrak subrentetan tanpa ruang hadapan dan belakang.
#include <string> std::string trim(const std::string& str) { const auto strBegin = str.find_first_not_of(" "); if (strBegin == std::string::npos) { return ""; } const auto strEnd = str.find_last_not_of(" "); const auto strRange = strEnd - strBegin + 1; return str.substr(strBegin, strRange); }
Melanjutkan Pemformatan untuk Mengurangkan Ruang Tambahan
Untuk mengalih keluar ruang tambahan antara perkataan dalam rentetan, pendekatan yang lebih komprehensif diperlukan. Ini boleh dicapai dengan berulang kali menggunakan fungsi find_first_of, find_last_not_of, dan substr untuk menggantikan subjulat ruang dengan aksara atau rentetan pemegang tempat.
std::string reduce(const std::string& str, const std::string& fill = " ") { auto result = trim(str); auto beginSpace = result.find_first_of(" "); while (beginSpace != std::string::npos) { const auto endSpace = result.find_first_not_of(" ", beginSpace); const auto range = endSpace - beginSpace; result.replace(beginSpace, range, fill); const auto newStart = beginSpace + fill.length(); beginSpace = result.find_first_of(" ", newStart); } return result; }
Contoh Penggunaan
Coretan kod berikut menunjukkan cara menggunakan fungsi ini:
const std::string foo = " too much\t \tspace\t\t\t "; const std::string bar = "one\ntwo"; std::cout << "[" << trim(foo) << "]" << std::endl; std::cout << "[" << reduce(foo) << "]" << std::endl; std::cout << "[" << reduce(foo, "-") << "]" << std::endl; std::cout << "[" << trim(bar) << "]" << std::endl;
Kod ini akan menghasilkan output berikut:
[too much space] [too much space] [too-much-space] [one two]
Atas ialah kandungan terperinci Bagaimana untuk Memangkas Ruang Utama dan Mengekor daripada Rentetan dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!