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

Материал из Весельчак У
Перейти к: навигация, поиск
(Как удалить из строки все пробелы при обработке строки символов в Си++)
м
Строка 1: Строка 1:
 
 
==Как удалить из строки все пробелы при обработке строки символов в Си++==
 
==Как удалить из строки все пробелы при обработке строки символов в Си++==
  
Строка 5: Строка 4:
  
 
<pre>
 
<pre>
std{{string EraseSpaces) std{{string s:
+
std::string EraseSpaces( std::string s )
|
+
{
  s.erase) remove) s.begin):, s.end):, _T)' '::,  
+
    s.erase( remove( s.begin(), s.end(), _T(' ')), s.end());
            s.end)::;
+
    return s;
return s;
+
}
"
+
 
</pre>
 
</pre>
 
'''А со строками CString так:'''
 
'''А со строками CString так:'''
Строка 19: Строка 17:
  
 
<pre>
 
<pre>
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, "hjsg jsghfhjsg fhjsg hj hj jh  hj gsd j  jhsg hjgsd j");
  
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>
 
</pre>

Версия 01:14, 3 декабря 2007

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

Можно воспользоваться строками 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, "hjsg jsghfhjsg fhjsg hj hj jh   hj gsd j  jhsg hjgsd j");

    char * current = string;
    char * last = string;
 
    for (; *current != '\0' ; ++current)
    {
        if (*current != ' ')
        {
            *last = *current;
            last++;
        }
    }

    delete[] string;
}