从string中删除c ++中的多个空格

时间:2013-11-18 00:52:05

标签: c++ string

我有以下代码打开文件并从中读取数据,然后取出相关部分并将其打印到屏幕上。

char* search = "model name";
int Offset;
string Cpu;
ifstream CpuInfo;
CpuInfo.open ("/proc/cpuinfo");

if(CpuInfo.is_open())
{
  while(!CpuInfo.eof())
  {
    getline(CpuInfo,Cpu);
    if ((Offset = Cpu.find(search, 0)) != string::npos)
    {
       //cout << "found '" << search << " " << line << endl;
       break;
    }
  }
  CpuInfo.close();
}
Cpu.replace (0,13,"");

cout << Cpu

这通常会输出您使用的CPU类型,但有一个问题是有些人在打印出的单词之间有不同的空格。

我的问题是如何从单词之间删除所有空格。它们可以随机安装,并不总是存在。

提前谢谢。

1 个答案:

答案 0 :(得分:2)

由于您的问题指出:“如何删除字词之间的所有空格”

除了std::remove_if之外,您还可以使用标准<algorithm>库中的std::isspace

std::string mystring = "Text with some   spaces";
std::remove_if(mystring.begin(), mystring.end(), std::isspace);

现在变为:

Textwithsomespaces

参考文献: http://en.cppreference.com/w/cpp/algorithm/remove