从C++字符串末尾删除空格字符

4
可能重复:

最佳的 std::string 剪裁方法是什么?
What's the best way to trim std::string

我有一个字符串:

std::string foo = "This is a string    "; // 4 spaces at end

如何去掉字符串末尾的空格,使其变为:
"This is a string" // no spaces at end

请注意,这只是一个示例,不代表我的代码。我不想硬编码:
std::string foo = "This is a string"; //wrong

这通常被称为“修剪”,例如,请查看https://dev59.com/FXVC5IYBdhLWcg3wrDNd - Anders Lindahl
7
可能是重复问题:如何最好地裁剪std::string? - e.dan
空格(ASCII代码32)不是NULL(ASCII代码0)。另外:https://dev59.com/eXI-5IYBdhLWcg3wipBk。 - AVH
3个回答

2

这里有很多关于如何截取字符串的方法。


1
我想知道为什么这个答案被踩了... - Vladimir Ivanov
13
我不能代表另一个给出负分评价的人,但我给它打了负分是因为你没有投票将其关闭为重复,而是试图通过链接到其他答案来获取声望。 作为一名10k用户,您应该已经学会了足够的SO知识,知道将其视为重复问题是正确的做法。 (出于同样的原因,我认为我不需要费力解释自己。) - sbi

1

首先,空字符(ASCII码0)和空格(ASCII码32)不是同一件事。

您可以使用std::string::find_last_not_of查找最后一个非空格字符,然后使用std::string::resize截断其后的所有内容。


0
string remove_spaces(const string &s)
{
  int last = s.size() - 1;
  while (last >= 0 && s[last] == ' ')
    --last;
  return s.substr(0, last + 1);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接