将双倍空间替换为单个空间

时间:2011-02-06 14:33:00

标签: c++

如何使用C ++将双空格替换为单个空格

例如:

"1  2  3  4  5" => "1 2 3 4 5"

这是我到目前为止所做的事情:

int _tmain(int argc, _TCHAR* argv[])
{
    string line;
    ifstream myfile(myFile);
    if(myfile.is_open())
    {
        cout<<"File Opened ...\n";
        while(myfile.good())
        {
            getline(myfile,line);
            splitLine(line);
            //cout<<line<<endl;
        }
    }
    else
        cout<<"File Not Found ...\n";
    myfile.close();
    return 0;
}

void splitLine(string line)
{
    int loc;
    cout<<line<<endl;
    while(loc = line.find(" "))
    {
        cout<<loc<<endl;
    }
}

1 个答案:

答案 0 :(得分:3)

在splitLines代码的while循环中,使用此代码。

  while((loc = line.find("  ")) != std::string::npos) //Two spaces here
  {
       line.replace(loc,2," "); //Single space in quotes
  }
  cout << line << endl;

多数民众赞成。我没试过,让我知道它是否有效。

正如fred指出的那样,在splitLines函数中使用pass by reference。上述解决方案是次正常的并且是O(n ^ 2)复杂度。这个更好。

  int loc = -1;
  while((loc = line.find("  ",loc+1)) != std::string::npos) //Two spaces here
  {
       line.replace(loc,2," "); //Single space in quotes
  }
  cout << line << endl;