如何在C ++中删除字符串中的空格

时间:2015-09-04 04:12:51

标签: c++

我使用" using namespace std;"在我用C ++进行的整个学习中,所以基本上我不理解像std :: out这样的东西,请帮帮我。让我说我有一个如下所示的代码,我希望这两个字符串是相同的当我比较它们时。

    int main(void)
{
    using namespace std;
    char a[10] = "123    ";
    char b[10] = "123";
    if(strcmp(a,b)==0)
    {cout << "same";}
return 0;
}

3 个答案:

答案 0 :(得分:0)

使用正则表达式\\s+匹配所有空格字符并使用regex_replace将其删除

#include <iostream>
#include <regex>
#include <string>

int main()
{
   std::string text = "Quick brown fox";
   std::regex spaces("\\s+");

   // construct a string holding the results
   std::string result = std::regex_replace(text, spaces, "");
   std::cout << '\n' << text << '\n';
   std::cout << '\n' << result << '\n';
}

参考http://en.cppreference.com/w/cpp/regex/regex_replace

答案 1 :(得分:0)

如果使用std :: string而不是char,则可以使用boost中的截断函数。

答案 2 :(得分:0)

使用std::string执行此操作

std::string a("123     ");
std::string b("123");
a.erase(std::remove_if(a.begin(), a.end(), ::isspace), a.end());
if (a == b)
    std::cout << "Same";

using之间的差异将是

using namespace std;
string a("123     ");
string b("123");
a.erase(remove_if(a.begin(), a.end(), ::isspace), a.end());
if (a == b)
    cout << "Same";

通常建议不要使用using namespace std。不要忘记包含<string><algorithm>

编辑如果您仍想以C方式执行此操作,请使用此帖子中的功能

https://stackoverflow.com/a/1726321/2425366

void RemoveSpaces(char * source) {
    char * i = source, * j = source;
    while (*j != 0) {
        *i = *j++;
        if (*i != ' ') i++;
    }
    *i = 0;
}