我需要从行中删除多余的空格,如1.47\t\t4.32 5.1 \t\tf41.4
。 我怎么能做到这一点与提升?C++删除字符串中的多余空格或制表符
1
A
回答
2
如果你只想做很容易,我会使用这样的:
std::string single_space(std::string const &input) {
std::istringstream buffer(input);
std::ostringstream result;
std::copy(std::istream_iterator<std::string>(buffer),
std::istream_iterator<std::string>(),
std::ostream_iterator<std::string>(result, " "));
return result.str();
}
如果你关心使它尽可能地快,你可能想看看另一个question from earlier today。
0
我找到了我的问题的答案。
std::string trim(const std::string& str,
const std::string& whitespace = " \t")
{
const auto strBegin = str.find_first_not_of(whitespace);
if (strBegin == std::string::npos)
return ""; // no content
const auto strEnd = str.find_last_not_of(whitespace);
const auto strRange = strEnd - strBegin + 1;
return str.substr(strBegin, strRange);
}
std::string reduce(std::string& str,
const std::string& fill = " ",
const std::string& whitespace = " \t")
{
// trim first
auto result = trim(str, whitespace);
// replace sub ranges
auto beginSpace = result.find_first_of(whitespace);
while (beginSpace != std::string::npos)
{
const auto endSpace = result.find_first_not_of(whitespace, beginSpace);
const auto range = endSpace - beginSpace;
result.replace(beginSpace, range, fill);
const auto newStart = beginSpace + fill.length();
beginSpace = result.find_first_of(whitespace, newStart);
}
return result;
}
0
这是一个非常简单的删除多余空格的实现。
#include <iostream>
std::string trimExtraWhiteSpaces(std::string &str);
int main(){
std::string str = " Apple is a fruit . ";
str = trimExtraWhiteSpaces(str);
std::cout<<str;
}
std::string trimExtraWhiteSpaces(std::string &str){
std::string s;
bool first = true;
bool space = false;
std::string::iterator iter;
for(iter = str.begin(); iter != str.end(); ++iter){
if(*iter == ' '){
if(first == false){
space = true;
}
}else{
if(*iter != ',' && *iter != '.'){
if(space){
s.push_back(' ');
}
}
s.push_back(*iter);
space = false;
first = false;
}
}
return s;
}
相关问题
- 1. 如何从字符串中删除C多余的空格
- 2. Python/Django:如何从字符串中删除多余的空格和制表符?
- 3. 删除字符串中多余的空白字符
- 4. 从字符串中删除多余的空格
- 5. 从字符串中删除多余的空格
- 6. 一个从字符串中删除多余空格的程序
- 7. 从字符串中删除多余的空格
- 8. 删除python中的字符串中的空格和制表符
- 9. 如何从C#中的字符串开头删除空格,多个空格或制表符
- 10. 限制/删除字符串中的多余字符(> 40)。
- 11. C ---删除字符串中的所有多余空格,排除指定字符之间的字符
- 12. 如何从Golang中的字符串中删除多余的空格/空格?
- 13. .split删除字符串中的制表符/空格吗?
- 14. 从字符串或字符串数组中删除多余的垃圾字
- 15. 如何使用正则表达式删除字符串中的多余空格
- 16. C - 删除字符串中特定字符的空格
- 17. 删除字符串和空格中的多个字符
- 18. 字符串末尾多余的空格
- 19. 删除Python中字符串中的多余字符
- 20. 从长字符串空格中删除单个空格字符
- 21. 从c#中的字符串中删除2个或更多的空格。
- 22. MySQL - 删除给定字符串或字符前后的空格
- 23. 删除Java字符串中的空格?
- 24. 删除字符串中的空格Javascript
- 25. 删除字符串中的空格
- 26. 删除字符串中的空格
- 27. 删除字符串中的空格
- 28. 删除XML字符串中的空格
- 29. Python - 删除字符串中的空格
- 30. 删除Python字符串中的空格
你是什么意思的额外空间? 是否要将其更改为“1.474.325.1f41.4”? – Osiris
无需提升。如果你不需要空格,'std :: remove_if'和'isspace'应该这样做。另一方面,如果你只想删除足够的空格,而其他字符之间只有一个空格,[this](http://stackoverflow.com/questions/3606597/replace-whitespace-in-an-string-c-助推 - 问题)看起来可能有所帮助。 – chris
奥西里斯,对不起,但字符串时,我发布的问题删除额外的空间:D。不,我有数字,然后两个空格然后数字。我需要字符串号码一个空格号码。 –