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

Материал из Весельчак У
Перейти к: навигация, поиск
(→‎Как удалить из строки все пробелы при обработке строки символов в Си++)
 
(не показано 10 промежуточных версий этого же участника)
Строка 1: Строка 1:
 +
== Как удалить из строки все пробелы при обработке строки символов в Си++?  ==
  
−
==Как удалить из строки все пробелы при обработке строки символов в Си++==
+
Можно воспользоваться строками STL:
  
−
'''Можно воспользоваться строками STL.'''
+
<syntaxhighlight lang="cpp">
 +
std::string EraseSpaces( std::string s )
 +
{
 +
    s.erase( remove( s.begin(), s.end(), _T(' ')), s.end());
 +
    return s;
 +
}
 +
</syntaxhighlight>
  
−
<pre>
+
А со строками CString так:  
−
std{{string EraseSpaces) std{{string s:
+
−
|
+
−
  s.erase) remove) s.begin):, s.end):, _T)' '::,
+
−
            s.end)::;
+
−
return s;
+
−
"
+
−
</pre>
+
−
'''А со строками CString так:'''
+
  
−
txt.Replace(" ","");
+
<syntaxhighlight lang="cpp">
 +
txt.Replace(" ", "");
 +
</syntaxhighlight>
  
−
'''Если надо все руками, то так'''
+
Если надо все руками, то так:
  
−
<pre>
+
<syntaxhighlight lang="cpp">
−
void main):
+
void main()
−
|
+
{
−
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;
−
char * last = string;
+
    char * last = string;
 
   
 
   
−
for ); *current != '\0' ; ++current:
+
    for (; *current != '\0' ; ++current)
−
|
+
    {
−
if )*current != ' ':
+
        if (*current != ' ')
−
|
+
        {
−
*last = *current;
+
            *last = *current;
−
last++;
+
            last++;
−
"
+
        }
−
"
+
    }
  
−
delete [(string;
+
    delete[] string;
−
"
+
}
−
</pre>
+
</syntaxhighlight>  
 +
 
 +
[[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;
}