Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Memangkas Ruang Utama dan Mengekor daripada Rentetan dalam C ?

Bagaimana untuk Memangkas Ruang Utama dan Mengekor daripada Rentetan dalam C ?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-19 09:28:03404semak imbas

How to Trim Leading and Trailing Spaces from a String in 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn