【发布时间】:2019-02-26 07:04:24
【问题描述】:
我需要删除单词之间除了一个空格之外的所有空格。我遍历字符串和if (temp.back() == ' ' && c != ' ') 在我们进入下一个单词之前检查最后一个空格。但它删除了所有的空白。任何提示问题出在哪里?
string removeWhiteSpace(string current)
{
string myNewString = "";
string temp = "";
for (char c : current)
{
temp.push_back(c);
if (temp.back() == ' ' && c != ' ')
{
myNewString.push_back(' ');
}
if (c != ' ')
{
myNewString.push_back(c);
}
}
return myNewString;
}
【问题讨论】:
-
首先,请learn how to debug your programs,你通常是这样解决这类问题的。
-
对于替代解决方案,您可以使用字符串流和流迭代器来获取附加到新字符串的“单词”,其间只有一个空格。
-
可能有帮助的技巧是找到第一个空白的索引位置并保持它的温度,然后删除该和下一个非空白字符之间的所有空白。删除空格后,使用该临时索引值在该位置添加一个空格。这可能不是最有效的方法,但它可以解决您的问题。此外,如果有多个空白部分,您可以更新下一组的临时索引位置。
标签: c++