首頁 > 後端開發 > C++ > 如何有效地刪除 C 字串中的空格?

如何有效地刪除 C 字串中的空格?

Barbara Streisand
發布: 2024-12-17 20:07:15
原創
558 人瀏覽過

How Can I Efficiently Remove Whitespace from C   Strings?

從 C 字串中消除空格

在 C 中,從字串中刪除空格是一項常見任務。一種簡單的方法是迭代字元並手動建構一個新字串。然而,有一個更有效的解決方案。

演算法

C STL 提供了一個強大的演算法,稱為remove_if,可以用於此目的。這個演算法採用一個謂詞函數來決定是否應該刪除某個元素,然後從容器中刪除所有此類元素。

在這種情況下,我們感興趣的謂詞函數是 isspace,它對於空白返回 true字符,否則為 false。透過將remove_if應用於帶有isspace謂詞的字串,我們可以消除所有空白字元。

實作

使用remove_if刪除空白字元後,我們需要將字串縮小到新的大小。這可以使用擦除方法來實現。以下是此方法的完整實作:

#include <algorithm>
#include <string>

void remove_spaces(std::string& str)
{
    str.erase(std::remove_if(str.begin(), str.end(), std::isspace), str.end());
}
登入後複製

remove_if 的自訂實作

STL 中的remove_if 演算法是一個可以應用於容器的通用函數超越弦。但是,對於像這樣的特定用例,實現針對字串定制的自訂版本可能會更方便:

template <typename T>
T remove_if(T beg, T end, std::function<bool(char)> pred)
{
    T dest = beg;
    for (T itr = beg; itr != end; ++itr)
    {
        if (!pred(*itr))
        {
            *(dest++) = *itr;
        }
    }
    return dest;
}
登入後複製

此自訂實作模仿STL remove_if 演算法的行為,可以使用專門針對基於字元的容器,例如std::string。

以上是如何有效地刪除 C 字串中的空格?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板