从键盘读入一行字符串(若干单词、空格组成),编写函数DelBlank(),将该字符串中多余的空格删除
就是要用string类来弄,如果用数组的方式来完成的话我能做,但是string就不知道怎么做啊,string类还没学,刚在网上找了找,有用find的,还有replace的,都没怎么看明白,主要是删除多余的空格这个不知道怎么操作,能否给我讲讲
[解决办法]
下面的代码没有验证,抛砖引玉,仅供参考
string& removeRedundantSpace(string& dest, const string& src)
{
dest.clear();
//remove leading spaces
string::size_type i = 0, len = src.size();
for(; i < len && src[i] == ' '; ++i) ;
//replace two or more spaces by one space
dest.reserve(len-i);
int blank = 0;
for(; i < len; ++i){
if(src[i] != ' '){
dest.push_back(src[i]);
blank = 0;
}
else if(blank == 0){
dest.push_back(' ');
blank = 1;
}
}
//remove tailing spaces
if(!dest.empty() && dest[dest.size()-1] == ' ') dest.erase(dest.size()-1);
return dest;
}
#include<iostream>
#include<sstream>
#include<fstream>
#include<string>
using namespace std;
void deleSpace(string &s)
{
istringstream iss(s);
string word, temp;
int count = 0;
while (iss >> word)
{
if (count == 0)
{
temp += word;
++count;
}
else
{
temp += " " + word;
}
}
s = temp;
}
int main()
{
string str = " think in C++ is a great book! ";
cout << "Before delete:\n" << str << endl;
deleSpace(str);
cout << "After delete:\n" << str << endl;
return 0;
}