猿问

删除字符串内空格的函数(iterator迭代 和find函数)求释义

string trimspace(string str)
{
	string::iterator it = str.begin();
	while ((it=find(it, str.end(), ' '))!=str.end())
	{
		str.erase(it);

		if (it == str.end()) 
		{
			break;
		}
	}
	return str;
}

这是我在网上找的删除字符串内所有空格的一个函数,觉得很有用,想把它理解透彻,但苦于初学,看string库函数确实恼火,求大神给函数内的语句逐句释义一下,特别是“iterator it = str.begin()”和“while ((it=find(it, str.end(), ' '))!=str.end())”,定义it的意义是什么?while循环的判断条件怎么解释?在网上找半天资料也没理解清楚。


gd5178
浏览 1326回答 1
1回答

米拉小胖子

iterator it = str.begin() //定义一个迭代器指向str的第一个字符 while ((it = find(it, str.end(), ' ')) != str.end()) // 用find函数葱it到str.end()里查//找有没有空格, 有空格就执行while里的句子,同时find返回查找到的指向空格的迭代器  str.end()指向str最后一个字符的后面一个位置   //我觉得你有必要先看一下容器和迭代器  勿在浮沙筑高台
随时随地看视频慕课网APP
我要回答