答案:常用方法是使用find_first_not_of和find_last_not_of定位非空格字符,再用substr截取有效部分。1. trim函數(shù)去除首尾空白字符,包括空格、制表符、換行等;2. trim_inplace原地修改字符串減少內(nèi)存分配;3. 若僅去除空格,可將字符集改為單個空格;4. 使用<algorithm>結合lambda更靈活,推薦第一種方法簡單高效。
在C++中去除字符串首尾空格,常用的方法是使用標準庫中的 find\_first\_not\_of 和 find\_last\_not\_of 函數(shù)來定位第一個和最后一個非空格字符的位置,然后用 substr 提取中間部分。
以下是一個通用的函數(shù),用于去除字符串開頭和結尾的空白字符(包括空格、制表符、換行等):
#include <string> #include <iostream> <p>std::string trim(const std::string& str) { size_t start = str.find_first_not_of(" \t\n\r"); if (start == std::string::npos) return ""; // 全是空白或空字符串 size_t end = str.find_last_not_of(" \t\n\r"); return str.substr(start, end - start + 1); }</p>
說明:
- find\_first\_not\_of 找到第一個不是空白的字符位置。
- find\_last\_not\_of 找到最后一個不是空白的字符位置。
- 如果整個字符串都是空格,返回空字符串。
- 使用 substr(start, length) 截取有效部分。
如果想直接修改原字符串而不是返回新字符串,可以這樣做:
void trim_inplace(std::string& str) { size_t start = str.find_first_not_of(" \t\n\r"); if (start == std::string::npos) { str.clear(); return; } size_t end = str.find_last_not_of(" \t\n\r"); str = str.substr(start, end - start + 1); }
如果只關心普通空格(' '),可以將字符集改為單個空格:
立即學習“C++免費學習筆記(深入)”;
std::string trim_spaces_only(const std::string& str) { size_t start = str.find_first_not_of(' '); if (start == std::string::npos) return ""; size_t end = str.find_last_not_of(' '); return str.substr(start, end - start + 1); }
也可以結合 <algorithm> 和 lambda 表達式實現(xiàn):
#include <algorithm> #include <cctype> <p>std::string trim_with_algo(const std::string& str) { auto start = std::find_if(str.begin(), str.end(), [](unsigned char c) { return !std::isspace(c); }); if (start == str.end()) return "";</p><pre class='brush:php;toolbar:false;'>auto end = std::find_if(str.rbegin(), str.rend(), [](unsigned char c) { return !std::isspace(c); }).base(); return std::string(start, end);
}
這種方式更靈活,可自定義判斷邏輯,比如是否忽略制表符等。
基本上就這些方法。推薦使用第一種基于 find\_first\_not\_of 的方式,簡單高效,適用于大多數(shù)場景。
以上就是c++++中如何去除字符串首尾空格_c++字符串去除空格方法的詳細內(nèi)容,更多請關注php中文網(wǎng)其它相關文章!
c++怎么學習?c++怎么入門?c++在哪學?c++怎么學才快?不用擔心,這里為大家提供了c++速學教程(入門到精通),有需要的小伙伴保存下載就能學習啦!
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號