C++抽象编程——自定义strlib文件

来源:互联网 发布:罪夜之奔 知乎 编辑:程序博客网 时间:2024/06/05 10:08

今天回顾了一下我最近的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;}

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

0 0
原创粉丝点击