C++ 流更改文件中的空间

c++ fstream changing space in file

本文关键字:空间 文件 C++      更新时间:2023-10-16

我想在我的文件中将每 2 个空格"ok.txt"更改为一个。这是我的代码。

fstream file1("ok.txt",ios::in|ios::out);
    if (file1.is_open())
    {
        cout << Acces allowed" << endl;
        string c;
        getline(file1, c);
        for (int i = 0; i < c.length(); i++)
        {
            if (c[i] == '  ')
                c[i] = ' ';
        }
        file1 << c;
    }
    else
    {
        cout << "Error";
    }
    file1.close();

你可以用作替换算法,如下所示:

std::string s = "bla  bla  bla";
std::string onespace = " ";
std::string doublespace = "  ";
size_t start_pos = 0;
while(( start_pos = s.find(doublespace, start_pos)) != std::string::npos) {
     s.replace(start_pos, doublespace.length(), onespace);
     start_pos += onespace.length();
}

这将改变s bla bla bla

替换它:

    for (int i = 0; i < c.length(); i++)
    {
        if (c[i] == '  ')
            c[i] = ' ';
    }

跟:

string singleSpace=" ";
string doubleSpace="  ";
int position = c.find( doubleSpace ); 
while ( position != string::npos ) 
{
  c.replace( position, doubleSpace.length(), singleSpace );
  position = c.find(doubleSpace, position + 1 );
} 

请注意,双倍空格是字符串而不是单个字符。