今天回顾了一下我最近的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;
}
如果有不懂的我们可以一起探讨哦