学习笔记----字符串的追加和裁剪

本文详细介绍了C++中字符串的基本操作,包括追加、裁剪和输出Unicode字符串的方法,以及如何正确使用不同类型的字符串(string和wstring),并解决输出问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 关于字符串的处理,我之前一般只停留在string的层面,也没有更加深入的去学习,心里面认为,会用就可以了,没有必要知道为什么是这样?类型到底是什么样子,可就在我稀里糊涂用的时候,却发现了很多乱码跳了出来,这个时候我不得不考虑类型的问题了。今天才知道,string类型原来是basic_string<char>型的一种定义。如果要用到unicode,就要用到wstring,wstring 原来是basic_string<wchar_t>类型的定义。真是火了,后来我用cout输出wstring的字符串,神气般的出问题了,原来要用wcout来输出到流。这个该死的东西,弄的我太丢人了,自认为自己的C++还不错,没有想到今天就这样碰壳了。先看看简单的字符串追加和裁剪的处理,为了能使basic_string<char>和basic_string<wchar_t>都能使用的方法,这里用模板实现,追随大老的踪迹,重现大老的光辉岁月:

/********************************/

//1.追加字符串

//

template <typename T>

void pad(basic_string<T>& s,typename basic_string<T>::size_type n,T c)

{

if (n > s.length())

{

s.append(n - s.length(),c);

}

}

/********************************/

2.裁剪字符串

template <typename T>

void trim(basic_string<T>& s,T c)

{

if (s.empty())

{

return;

}

typename basic_string<T>::iterator ptr;

for (ptr = s.end(); ptr != s.begin() && *--ptr == c;)

{

if (*ptr != c)

{

ptr ++;

}

s.erase(ptr,s.end());

}

}

/********************************/

int _tmain(int argc, _TCHAR* argv[])

{

/***********************************************

string s = "xiaohe is a good boy";

wstring ws_ = L"xiaohe is good boy!";

pad(s,s.length() + 6,'.');

cout << s << endl;

pad(ws_,ws_.length() + 3,L'!');

wcout << ws_ << endl;

/***********************************************/

string _charStr = "hello,boys,,,,";

wstring _wchar_tStr = L"hello,girls!!!!";

trim(_charStr,',');

cout << _charStr << endl;

trim(_wchar_tStr,L'!');

wcout << _wchar_tStr << endl;

/***********************************************/

return 0;

}

因为之前一直看boost,所以对boost里的字符串修剪的方法还是相对比较了解。boost里虽然提供了很多方法,但因为它不是zhu

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值