2015-09-04 4 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-remove-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

Если вы используете зЬй :: строку вместо полукокса вы могли бы использовать функция усечения от 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>.

EDIT Если вы все еще хотите сделать это 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; 
} 
Смежные вопросы