【Poco学习笔记】String库之常用函数

目录

前言

一、Trimming

二、大小写转换

三、翻译函数

四、字符串替换

五、字符串对比

六、字符串拼接

总结


前言

Poco库基于C++的string库和wstring库封装了一个对应的String处理库,Poco的string库可以用于实现字符串的格式化,正则表达式、字符串编码等等。

下面介绍一下,Poco库提供给我们常用的一些字符串格式化操作处理,如:字符串裁剪、字符串转换、字符串不区分大小写比较、替换字符串等。

Poco的string库里面的功能函数同一功能函数会分两大类

  • 处理后返回字符串的值,不修改原有字符串
  • 在原本的字符串上进行修改

Poco的库函数用InPlace来区分这两类函数,即实现同一个功能,如果函数名有带InPlace的,则说明是修改原本的字符串。

下面咱们开始学习几个功能函数

一、Trimming

trim 是poco提供的一个删除字符串开头跟结尾空白的函数

//trim 是poco提供的一个删除字符串开头跟结尾空白的函数
//函数带Inplace的是修改字符串本身,不带Inplace的是返回修改的字符串的值。
void LearnTrim()
{
	using Poco::trim;
	using Poco::trimLeft;
	using Poco::trimRight;
	using Poco::trimRightInPlace;

	std::string hello("    Hello,    baiyu!   ");
	std::cout << "original  string: " << hello << "666" << std::endl;//"    Hello,    baiyu!   666"

	//删除字符串开头的空格
	std::string s1(trimLeft(hello)); // "Hello,    baiyu!   666"
	std::cout << "trimLeft  string: " << s1 << "666" << std::endl;

	//删除字符串结尾的空格
	trimRightInPlace(s1); // "Hello,    baiyu!666"
	std::cout << "trimRightInPlace: " << s1 << "666" << std::endl;

	//删除字符串开头跟结尾的所有空格
	std::string s2(trim(hello)); // "Hello,    baiyu!666"
	std::cout << "trim      string: " << s2 << "666" << std::endl;
}

二、大小写转换

//大小写转换函数
void LearnConversion()
{
	using Poco::toUpper;
	using Poco::toLower;
	using Poco::toLowerInPlace;
	using Poco::icompare;
	std::string s("Hello Baiyu");
	std::cout << "original string: " << s << std::endl;

	std::string s1(toUpper(s));//HELLO BAIYU
	std::cout << "s1 string: " << s1 << std::endl;

	std::string s2(toLower(s));//hello baiyu
	std::cout << "s2 string: " << s2 << std::endl;
}

三、翻译函数

void LearnTranslate()
{
	using Poco::translateInPlace;
	std::string s("Hello Baiyu!");

	std::cout <<"original: "<< s << std::endl;

	//按顺序翻译替换对应的位置的字符
	//H-->*   e-->5   y-->2   u-->5   !-->0   1-->?
	translateInPlace(s, "Heyu!l", "*5250?"); // "*5??o Bai250"

	std::cout << "transerlate: " << s << std::endl;
}

四、字符串替换

void LearnSubstringReplace()
{
	using Poco::replace;
	std::string s("baiyu aaccbb");//baiyu aaccbb
	std::cout << s << std::endl;

	std::string r(replace(s, "aa", "AA"));//baiyu AAccbb
	std::cout << r << std::endl;

	r = replace(s, "baiyu", "zhh");//zhh aaccbb
	std::cout << r << std::endl;
}

五、字符串对比

void LearnComparison()
{
	// icompare的结果如下:
	//	0 if str1 == str2
	// -1 if str1 < str2
	// +1 if str1 > str2

	using Poco::icompare;
	std::string s1("baiyu");
	std::string s2("Baiyu");
	std::string s3("hello world");
	std::string s4("C");
	std::string s5("B");

	int rc = icompare(s1, s2);
	std::cout << rc << std::endl;

	rc = icompare(s1, "zhh");
	std::cout << rc << std::endl;

	rc = icompare(s4, s5);
	std::cout << rc << std::endl;

}

六、字符串拼接

void LearnCat()
{
	using Poco::cat;
	std::string s;
	std::string s1("baiyu, ");
	std::string s2("hello world");

	s = cat(s1, s2);//直接字符串拼接
	std::cout << s << std::endl;

	std::vector<std::string> names;
	names.push_back("baiyu");
	names.push_back("zhh");
	names.push_back("man");
	//遍历字符串数据拼接,delim是连接符
	s = cat(std::string(", "), names.begin(), names.end());
	// "baiyu, zhh, man"
	std::cout << s << std::endl;	
}

总结

Poco库封装的字符串函数还是比较容易用的~

关于Poco库的String函数的更多具体使用,参考Poco/String.h这个头文件

猜你喜欢

转载自blog.csdn.net/zhh763984017/article/details/114242126
今日推荐