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;
}

如果有不懂的我们可以一起探讨哦

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值