从键盘读入一行字符串(若干单纯词、空格组成),编写函数DelBlank(),将该字符串中多余的空格删除

从键盘读入一行字符串(若干单词、空格组成),编写函数DelBlank(),将该字符串中多余的空格删除
就是要用string类来弄,如果用数组的方式来完成的话我能做,但是string就不知道怎么做啊,string类还没学,刚在网上找了找,有用find的,还有replace的,都没怎么看明白,主要是删除多余的空格这个不知道怎么操作,能否给我讲讲从键盘读入一行字符串(若干单纯词、空格组成),编写函数DelBlank(),将该字符串中多余的空格删除

------解决方案--------------------
下面的代码没有验证,抛砖引玉,仅供参考

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;
}

------解决方案--------------------
参考《编译原理》中的词法分析和有限状态自动机。