1. 程式人生 > >C++抽象程式設計——自定義strlib檔案

C++抽象程式設計——自定義strlib檔案

今天回顧了一下我最近的C++學習,發現呢我是學了很多的處理問題的方法了。我特地看了一下字串的總結。然後我把一些很常用的處理字串的方法都寫下來了。在我以往的部落格中都可以看到它們。我把它們作為標頭檔案跟實現檔案,這樣我們前短時間的介面就可以排上用場了,以後我會時不時的把以前的程式碼封裝起來,變為自己的庫
這次的庫就是我們所謂的“strlib”,裡面有去除字串中的空格函式,有大小寫轉換。有字串與數字之間的轉換。這些我之前的部落格全部都提到過。這次我只是總結一下。

strlib.h檔案:

/*
*這個介面匯出一些實用的字串處理函式
*/
#ifndef _strlib_h
#define _strlib_h
/* *函式:integerToString *用法:string str = integerToString(n) *---------------------- *用途:將一串整型類的數字轉換為字串,例如字串123 *加100,結果為123100,但是轉換為數字後就是223 */ std::string integerToString(int n); /* *函式:stringToInteger *用法:int n = stringToInteger(line) *---------------------- *用途:將一串字串轉換為整型類的數字,以便用於運算 */ int stringToInteger(std
::string line); /* *函式:realToString(d) *用法:string str = realToString(d) *---------------------- *用途:將實數轉變為字串 */ std::string realToString(double n); /* *函式:stringToReal(line) *用法:int n = stringToReal(line) *---------------------- *用途:將字串轉換為實數 */ double stringToReal(std::string line); /* *函式:toUpperCase *用法:string str = toUpperCase(line) *---------------------- *用途:將字串line中的所有字母轉換為大寫字母 *當字串中的元素不是字母的時候,就不轉換 */
std::string toUpperCase(std::string line); /* *函式:toLowerCase *用法:string str = toLowerCase(line) *-------------------------- *用途:將字串line中的所有字母轉換為小寫字母 *當字串中的元素不是字母的時候,就不轉換 */ std::string toLowerCase(std::string line); /* *函式:startsWith *用法:if(startsWith(str,prefix)) *-------------------------- *用途:判斷字串str 是不是以字串prefix為字首,是返回true *否則,返回false */ bool startsWith(std::string str, std::string prefix); /* *函式: endsWith *用法: if(endsWith(str,suffix)) *-------------------------- *用途:斷字串str 是不是以字串suffix為字首,是返回true *否則,返回false */ bool endsWith(std::string str, std::string suffix); /* *函式:reverse *用法:string str = reverse(line) *-------------------------- *用途:返回line的翻轉後的字串,比如字串ABC *翻轉後變為 CBA */ std::string reverse(std::string line); /* *函式:removeSpaces *用法:string str = removeSpaces(line) *--------------------------- *用途:返回刪除空格後的一串字串,功能類似於trim */ std::string removeSpaces(std::string line); /*輸出錯誤資訊,並停止執行程式*/ void error(std::string msg); #endif

strlib.cpp檔案:

#include <iostream>
#include <fstream>
#include <sstream> //string stream 
#include <cstdlib> //EXIT_FAILURE
#include <string>
#include <cctype>
#include <algorithm>
#include "strlib.h" 
using namespace std;

void error(string msg){
    cerr << msg << endl;
    exit(EXIT_FAILURE);
}

int stringToInteger(string str) {
    istringstream stream(str);
    int value;
    stream >> value >> ws;
    if (stream.fail() || !stream.eof()) {
    error("非法的整型轉換");
        return 0;
    }
    return value;
}

string integerToString(int n) {
    ostringstream stream;
    stream << n;
    return stream.str();
}

string toLowerCase(string line) {  
    string result = "";  
    for (int i = 0; i < line.length(); i++) {  
        line[i] = tolower(line[i]);  
        result += line[i];  
    }   
    return result;  
} 

string toUpperCase(string line) {  
    string result = "";  
    for (int i = 0; i < line.length(); i++) {  
        line[i] = toupper(line[i]);  
        result += line[i];  
    }   
    return result;  
}   

bool startsWith(string str, string prefix) {  
    if (str.length() < prefix.length()) return false;  
    for (int i = 0; i < prefix.length(); i++) {  
        if (str[i] != prefix[i]) return false;  
    }  
    return true;  
}  

bool endsWith(string str, string suffix) {  
    if (str.length() < suffix.length()) return false;  
    for (int i = suffix.length()-1; i >= 0; i--) {  
        if (str[i] != suffix[i]) return false;  
    }  
    return true;  
} 

string reverse(string line) {  
    string rev = "";  
    for (int i = line.length() - 1; i >= 0; i--) {  
    rev += line[i];  
    }  
    return rev;  
}  
string removeSpaces(string line){
    string::iterator it,it2; //迭代器2用於存入資料 
    string rev = "";
    it = remove(line.begin(),line.end(),' ');/*移除空格,可以把空格換成你想要移除的元素*/ 
    for(it2 = line.begin(); it2 != it; it2++){ //迭代自增 
        rev += *it2;
    }
    return rev;
}

如果有不懂的我們可以一起探討哦

相關推薦

C++抽象程式設計——定義strlib檔案

今天回顧了一下我最近的C++學習,發現呢我是學了很多的處理問題的方法了。我特地看了一下字串的總結。然後我把一些很常用的處理字串的方法都寫下來了。在我以往的部落格中都可以看到它們。我把它們作為標頭檔案跟實現檔案,這樣我們前短時間的介面就可以排上用場了,以後我會時不

C# WinForm中如何定義config檔案(XML檔案),並且讀取和儲存它

我這裡以連結資料庫為例子, 其中書寫的Config的xml檔案如下: <?xml version="1.0" encoding="utf-8"?> <configuration>   <appSettings>     <add k

hadoop程式設計小技巧(5)---定義輸入檔案格式類InputFormat

Hadoop程式碼測試環境:Hadoop2.4應用:在對資料需要進行一定條件的過濾和簡單處理的時候可以使用自定義輸入檔案格式類。Hadoop內建的輸入檔案格式類有:1)FileInputFormat<K,V>這個是基本的父類,我們自定義就直接使用它作為父類;2)T

C# clickonce 部署定義檔案

問題:最近,自己在使用clickonce在進行部署時發現Access檔案老是不能打包到安裝檔案一起? 解決辦法: 1、在專案上右鍵—>新增—>新增現在項 將自已需要的檔案新增進來。 2、選中剛新增進來的檔案,在屬性視窗將“複製到輸出目錄”的值選為“始終複製”;將“生成操作”的

c#(winform)中定義ListItem類方便ComboBox添加Item項

urn left over string his 定義 return box item 1.定義ListItem類 public class ListItem { private string _key = string.Empty;

c++primer,定義一個復數類

opera 指針 隨著 per call 拷貝構造函數 會銷 局部變量 eal 1 #include<iostream> 2 #include<string> 3 #include<vector> 4 #include<a

c#如何處理定義消息

span 只供參考 dto win32 使用 void font 示例 截取 C#自定義消息通信往往采用事件驅動的方式實現,但有時候我們不得不采用操作系統的消息通信機制,例如在和底層語言開發的DLL交互時,是比較方便的。下面列舉了一些實現方式,以供參考。有

C#實現ProperTyGrid定義屬性的方法

add order ont href foreach -c 表格 jquery desc 本文實例講解了C#實現ProperTyGrid自定義屬性的方法,分享給大家供大家參考。具體方法如下: 一般來說,C#如果要實現自定義屬性必須要需要實現接口ICustomTypeDes

c#中的定義泛型類、泛型方法和泛型接口

泛型方法 return bsp 其中 tel sts code 方式 void ? 泛型的產生其中一個原因就是為了解決原來集合類中元素的裝箱和拆箱問題: 一、泛型類: /// <summary> /// 返回前臺的消息 /// &

C#API解決定義請求頭下的跨域問題

contains sha allow oba webapi with cat ride bapi 解決方法一: public class CrosHandler : DelegatingHandler { private const str

minigui:定義字型檔案的安裝位置(install location for custom font)

我們的基於minigui的嵌入式系統專案中使用了True Type字型,原以以為只要把字型檔案應用程式所在路徑下的字型資料夾(res/font)下就可以了,但實際執行時報錯了: NEWGAL>PCXVFB: /usr/local/bin/gvfb 12695 miniStudi

Springboot讀取配置檔案、pom檔案定義配置檔案

前言 很多人都知道讀取配置檔案,這是初級做法,上升一點難度是使用java bean的方式讀取自定義配置檔案,但是大家很少有知道讀取pom檔案資訊,接下來我都會講到。 正文 筆者還是基於Spring Boot ::        (v1.5.8.RE

Centos7上新增定義服務檔案並開機啟動

Ⅰ-1 寫服務檔案 [Unit]   ##服務的說明Description:描述服務After:描述服務類別 [Service]   ##服務執行引數的設定Type=forking是後臺執行的形式ExecStart為服務的具體執行命令ExecReload為重啟命令E

Android studio 使用定義mk檔案編譯jni專案

最近將公司ndk專案從eclipse遷移到as,為了方便省事,直接使用原有mk檔案。參考網路資料,順利完成遷移工作。現貼出使用自定義mk檔案的關鍵程式碼,mark以備後面使用。 buildTypes { release { minifyEna

Java類載入器( CLassLoader ) 死磕5: 定義一個檔案系統的classLoader

【正文】Java類載入器(  CLassLoader ) 死磕5:  自定義一個檔案系統classLoader 本小節目錄 5.1. 自定義類載入器的基本流程 5.2. 入門案例:自定義檔案系統類載入器 5.3. 案例的環境配置 5.4 FileClassLoader 案例實現步驟 5

spring boot 讀取定義properties檔案

@Configuration@Componentpublic class PropertiesConfig { private static final String[] properties = {"/application.properties"}; private static Proper

定義Hive檔案和記錄格式(十)

create table 語句中預設的是stored as textfile       練習了store as sequencefile,省空間,提升i/o效能       PIG中輸入輸出分隔符預設是製表符\t,而到了hive中

Android 定義型別檔案與程式關聯

0x01 功能  實現在其他應用中開啟某個字尾名的檔案 可以直接跳轉到本應用中的某個activity進行處理   0x01 實現    首先建立一個activity ,然後在manifest裡對該activity項編輯,加入    <intent-

springboot---讀取定義配置檔案

讀取自定義配置檔案 在有些時候,我們要配置一些資料,地址,路徑等操作,比如,上傳檔案的地址,新老路徑的定義,白名單介面等,這個時候需要在配置檔案裡面進行配置,而不是寫在程式碼裡面,在springboot裡面可以使用註解和實體兩種方式進行獲取到配置檔案裡面的配置資訊,我的做法是建立一個class,

C++11使用定義hash函式及比較函式的unordered_set

#include <unordered_set> #include <functional> #include <iostream> struct MyKey { int key; }; struct MyKeyHashHasher { size_