2015-09-04 76 views
-7

我用「using namespace std」在我的整個C++研究中,基本上我不明白std :: out之類的東西,請幫我解決。比方說,我有一個如下所示的代碼,我希望兩個字符串在我比較時是相同的。如何從C++中的字符串中刪除空格

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

檢查這個線程:) http://stackoverflow.com/questions/使用功能5891610/how-to-string-characters-from-a-string – Zerray

+1

'std :: cout'真的很可怕嗎?這只是另一個完全相同的名字。 – john

+1

你的問題是不明確的,你想從字符串中刪除所有空格,你只是想從字符串的末尾刪除它們,也許你想從開始和結束,但不是中間刪除它們?您需要清楚地詢問您是否需要適當的答案。 – john

回答

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

+0

一個例子會很好。 – Wtower

0

如果您使用的std :: string代替字符,你可以使用來自boost的截斷函數。

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; 
}