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
Lepaskan: 2024-11-19 09:28:03
asal
410 orang telah melayarinya

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);
}
Salin selepas log masuk

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;
}
Salin selepas log masuk

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;
Salin selepas log masuk

Kod ini akan menghasilkan output berikut:

[too much               space]  
[too much space]  
[too-much-space]  
[one  
two]  
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan