FAQ:ANSI CPP:удалить из строки все пробелы — различия между версиями

Материал из Весельчак У
Перейти к: навигация, поиск
м (Форматирование.)
 
(не показано 5 промежуточных версий этого же участника)
Строка 1: Строка 1:
==Как удалить из строки все пробелы при обработке строки символов в Си++==
+
== Как удалить из строки все пробелы при обработке строки символов в Си++==
  
Можно воспользоваться строками STL:
+
Можно воспользоваться строками STL:  
  
 
<syntaxhighlight lang="cpp">
 
<syntaxhighlight lang="cpp">
Строка 9: Строка 9:
 
     return s;
 
     return s;
 
}
 
}
</syntaxhighlight>
+
</syntaxhighlight>  
  
А со строками CString так:
+
А со строками CString так:  
  
 
<syntaxhighlight lang="cpp">
 
<syntaxhighlight lang="cpp">
txt.Replace(" ","");
+
txt.Replace(" ", "");
</syntaxhighlight>
+
</syntaxhighlight>  
  
Если надо все руками, то так:
+
Если надо все руками, то так:  
  
 
<syntaxhighlight lang="cpp">
 
<syntaxhighlight lang="cpp">
Строка 23: Строка 23:
 
{
 
{
 
     char * string = new char[128];
 
     char * string = new char[128];
     strcpy(string, "hjsg jsghfhjsg fhjsg hj hj jh  hj gsd j  jhsg hjgsd j");
+
     strcpy(string, "строка символов с пробелами");
  
 
     char * current = string;
 
     char * current = string;
Строка 39: Строка 39:
 
     delete[] string;
 
     delete[] string;
 
}
 
}
</syntaxhighlight>
+
</syntaxhighlight>  
  
[[Category:FAQ]]
+
[[Category:FAQ:ANSI CPP]] [[Category:FAQ:MFC]] [[Category:FAQ:STL]]

Текущая версия на 21:53, 4 октября 2009

Как удалить из строки все пробелы при обработке строки символов в Си++?

Можно воспользоваться строками STL:

std::string EraseSpaces( std::string s )
{
    s.erase( remove( s.begin(), s.end(), _T(' ')), s.end());
    return s;
}

А со строками CString так:

txt.Replace(" ", "");

Если надо все руками, то так:

void main()
{
    char * string = new char[128];
    strcpy(string, "строка символов с пробелами");
 
    char * current = string;
    char * last = string;
 
    for (; *current != '\0' ; ++current)
    {
        if (*current != ' ')
        {
            *last = *current;
            last++;
        }
    }
 
    delete[] string;
}