C++ string的trim, split方法
很多其他語言的libary都會有去除string類的首尾空格的庫函式,但是標準C++的庫卻不提供這個功能。但是C++string也提供很強大的功能,實現trim這種功能也不難。下面是幾種方法:
1.使用string的find_first_not_of,和find_last_not_of方法
-
/*
-
Filename : StringTrim1.cpp
-
Compiler : Visual C++ 8.0
-
Description : Demo how to trim string by find_first_not_of & find_last_not_of
-
Release : 11/17/2006
-
*/
-
#include <iostream>
-
#include <string>
-
std::string& trim(std::string &);
-
int main()
-
{
-
std::string s = " Hello World!! ";
-
std::cout << s << " size:" << s.size() << std::endl;
-
std::cout << trim(s) << " size:" << trim(s).size() << std::endl;
-
return 0;
-
}
-
std::string& trim(std::string &s)
-
{
-
if (s.empty())
-
{
-
return s;
-
}
-
s.erase(0,s.find_first_not_of(" "));
-
s.erase(s.find_last_not_of(" ") + 1);
-
return s;
-
}
2.使用boost庫中的trim,boost庫對提供很多C++標準庫沒有但是又非常常用和好用的庫函式,例如正則表示式,執行緒庫等等。
-
/*
-
Filename : boostStringTrim.cpp
-
Compiler : Visual C++ 8.0 / ISO C++ (boost)
-
Description : Demo how to boost to trim string
-
Release : 02/22/2007 1.0
-
*/
-
#include <iostream>
-
#include <string>
-
#include <boost/algorithm/string.hpp>
-
using namespace std;
-
using namespace boost;
-
int main() {
-
string s = " hello boost!! ";
-
trim(s);
-
cout << s << endl;
-
}
3.使用template(我用GCC編譯不通過,用VS2005卻可以)
-
/*
-
Filename : stringTrim1.cpp
-
Compiler : Visual C++ 8.0
-
Description : Demo how to trim string by other method.
-
Release : 11/18/2006
-
*/
-
#include <string>
-
#include <iostream>
-
#include <cwctype>
-
template <class T>
-
std::basic_string<T>& trim(std::basic_string<T>&);
-
int main( )
-
{
-
std::string s = " Hello World!! ";
-
std::cout << s << " size:" << s.size() << std::endl;
-
std::cout << trim(s) << " size:" << trim(s).size() << std::endl;
-
return 0;
-
}
-
template <class T>
-
std::basic_string<T>& trim(std::basic_string<T>& s)
-
{
-
if (s.empty()) {
-
return s;
-
}
-
std::basic_string<T>::iterator c;
-
// Erase whitespace before the string
-
for (c = s.begin(); c != s.end() && iswspace(*c++);); s.erase(s.begin(), --c);
-
// Erase whitespace after the string
-
for (c = s.end(); c != s.begin() && iswspace(*--c);); s.erase(++c, s.end());
-
return s;
-
}
split方法
-
//注意:當字串為空時,也會返回一個空字串
-
void split(std::string& s, std::string& delim,std::vector< std::string >* ret)
-
{
-
size_t last = 0;
-
size_t index=s.find_first_of(delim,last);
-
while (index!=std::string::npos)
-
{
-
ret->push_back(s.substr(last,index-last));
-
last=index+1;
-
index=s.find_first_of(delim,last);
-
}
-
if (index-last>0)
-
{
-
ret->push_back(s.substr(last,index-last));
-
}
相關推薦
C 實現字串按多個字符采用Split方法分割
using System.Text.RegularExpressions;string str="aaajsbbbjsccc";string[] sArray=Regex.Split(str,"js",RegexOptions.IgnoreCase);foreach (string i in sArray)
C++ string的trim, split方法
很多其他語言的libary都會有去除string類的首尾空格的庫函式,但是標準C++的庫卻不提供這個功能。但是C++string也提供很強大的功能,實現trim這種功能也不難。下面是幾種方法: 1.使用string的find_first_not_of,和fi
c++ 一次完整讀檔案 及 實現string 的split方法
要把檔案的字串讀出,並將它分塊(split)。 首先檔案一行一行讀臺麻煩,網上搜了下,發現寶貝,一次讀取整個檔案到記憶體中, http://www.360doc.com/content/13/1101/01/14458144_325725835.shtml std::if
C#實現字串按多個字符采用Split方法分割得到陣列
string agentInfo = userInfo.Attribute19.ToString(); string[] myAgent = agentInfo.Split(new string[] { "$#$" }, StringSplitOptions.None);
c#中Split 分離字元以及空格消除方法
c#中Split 分離字元以及空格消除方法 1 split幾種分離方法 1)用字串分隔:using System.Text.RegularExpressions;string str="aaajsbbbjsccc";string[] sArray=Rege
設計模式C++實現——工廠方法模式
對象 類型 begin 創建對象 dia rate rod rtu log 模式定義: 工廠方法模式定義了一個創建對象的接口,但由子類決定要實例化的類是哪一個。工廠方法讓類把實例化推遲到子類。 模式結構: Creator是一個類,它
C#中的方法傳參與switch、if結構(4)
判斷 1.2 菱形 條件表達式 執行 代碼 輸出 分類 簡易 一、方法傳參的2種方式 1、按值傳遞 傳遞的是值的副本,值會更改但未保留,值最終並未更改 2、按引用傳遞(形參用ref關鍵字修飾)【P86頁】 傳遞的是地址,值會更改且保留,值最終更改
Java Split()方法按點(.)切分註意細節
absolut int abs println clip nts image content con 按點(.)切分,必須要註意轉義!如:split("\\.")。 例子: [java] view plain copy print? public clas
c#類的方法表的建立和方法的調用
方法覆蓋 cep 過程 final 提高 用法比較 stat 構造過程 調用方法 對於方法的調用,很是令我頭疼,什麽靜態方法,實例方法,實例虛方法,這裏查了很多資料,總結如下: 這裏聲明,我也是菜鳥,這裏只討論方法的調用相關的技術,屬於個人理解,如有錯誤,請指正 思路:
C# Process.Start()方法詳解
stat 字符串 檔案 atd 一個 用戶名 菜單 簡單介紹 run System.Diagnostics.Process.Start(); 能做什麽呢?它主要有以下幾個功能: 1、打開某個鏈接網址(彈窗)。 2、定位打開某個文件目錄。 3、打開系統特殊文件夾,如“控制面板
C#中Split用法~字符串分隔
rec get 字符 說明 logs sep bbs options tle 1、用字符串分隔: using System.Text.RegularExpressions;string str="aaajsbbbjsccc";string[] sArray=
C#類、方法的訪問修飾符
屬性 tro nbsp 程序 .net art 支持 分析 方法 這篇文章主要介紹了C#類的訪問修飾符用法,較為詳細的分析了C#類的訪問修飾符概念與用法,具有一定的參考借鑒價值,需要的朋友可以參考下 本文詳細分析了C#類的訪問修飾符用法,分享給大家供大家參考。具體用法分析
區分slice,splice和split方法
表達式 log tor 數量 字符串 移除 cnblogs code col 1.slice(數組) 用法:array.slice(start,end) 解釋:該方法是對數組進行部分截取,並返回一個數組副本;參數start是截取的開始數組索引,end參數等於你要取的最後
c# 擴展方法奇思妙用基礎篇五:Dictionary<TKey, TValue> 擴展
ews public turn false div role 自我 cnblogs static Dictionary<TKey, TValue> 類是常用的一個基礎類,但用起來有時確不是很方便。本文逐一討論,並使用擴展方法解決。 向字典中添加鍵和值 添加鍵和值
C#_Excel操作方法匯總
pxn ugo sm4 方法 blank pcc 操作方法 exce mcs S付qcd杜Co肇戮2http://www.zcool.com.cn/collection/ZMTg0MTYyNzI=.html 2野1室4a凹韌84赫shttp://www.zcool.com
20、C#裏面方法的創建和顯示
c#在C#裏面,和Java也是一樣的,都是可以創建方法的。這裏所說的方法,就是其它編程語言裏面的函數、子程序、過程等。創建的方法有兩種:一種是沒有返回值的方法。一種是有返回值的方法。無論是哪種方法,其實都是很簡單的。實例:沒有返回值的方法的定義和使用 public static void Main
string通過逗號分割不用split方法
new 不用 ray rgs bst mon java sys port package com.simon; import java.util.ArrayList; import java.util.Iterator; import java.util.Li
C#擴展方法(Extend Method)
return res string 調用 rabl 靜態類 edas exceptio new C#擴展方法(Extend Method) 在不更改原來類的基礎上,為類添加方法。 1,擴展方法必須寫靜態類中 2,擴展方法必須是靜態方法,雖然是靜態方法,但是這個擴張方
C#中抽象方法與虛擬方法的區別
的人 -a 對象 abstract 數據 style html tools mar 學過C#的人應該都知道抽象方法與虛擬方法,而很多初學者對二者之間的區別並不是很了解。今天本文就來分析一下二者之間的區別。並附上實例加以說明。具體分析如下: 一、主要區別: 對於抽象方
Java 字符串Split方法的一個坑
static pub view div nbsp lang ray 負數 pri java字符串的split,只傳一個參數,後面空白的字符串會被忽略: public static void main(String[] args) { String st