C++ 将一句话里的单词进行倒置,标点符号不倒换——使用string库实现

#include 
#include 
using namespace std;

string reverse(string sentence)
{
	string::iterator begin = sentence.begin();
	string::iterator end = sentence.end();
	char tmp;
	while( begin < end )
	{
		tmp = *begin;
		*begin = *(end-1);
		*(end-1) = tmp;
		begin++;
		end--;
	}

	string::size_type num = sentence.size();
	string::size_type i = 0;
	string::size_type begin_tmp;
	string::size_type end_tmp;
	while( i < num )                               //只能用字符串下标判断
	{
		if(sentence[i] != ' ')
		{
			begin_tmp = i;
			while(sentence[i] != ' ')
			{
				i++;
				if(i>=num)            //防止下标越界
				{
					break;
				}
			}
			i = i-1;
			end_tmp = i;
		}

		while(begin_tmp

注意:虽然string库提供迭代器 string::iterator end = sentence.end() ,可以很方便的定位到字符串最后一个字符之后,但是迭代器end无法进行*end操作(出现*end就会报错)也就无法用*end = NULL来进行边界条件判断,只能依靠下标值来进行判断。

C++ 将一句话里的单词进行倒置,标点符号不倒换——使用string库实现_第1张图片



你可能感兴趣的:(C++)