FAQ:ANSI CPP:удалить из строки все пробелы — различия между версиями
Материал из Весельчак У
(→Как удалить из строки все пробелы при обработке строки символов в Си++) |
RXL (обсуждение | вклад) |
||
| (не показано 11 промежуточных версий 2 участников) | |||
| Строка 1: | Строка 1: | ||
| + | == Как удалить из строки все пробелы при обработке строки символов в Си++? == | ||
| − | + | Можно воспользоваться строками STL: | |
| − | '' | + | <syntaxhighlight lang="cpp"> |
| + | std::string EraseSpaces( std::string s ) | ||
| + | { | ||
| + | s.erase( remove( s.begin(), s.end(), _T(' ')), s.end()); | ||
| + | return s; | ||
| + | } | ||
| + | </syntaxhighlight> | ||
| − | + | А со строками CString так: | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | txt.Replace(" ",""); | + | <syntaxhighlight lang="cpp"> |
| + | txt.Replace(" ", ""); | ||
| + | </syntaxhighlight> | ||
| − | + | Если надо все руками, то так: | |
| − | + | <syntaxhighlight lang="cpp"> | |
| − | < | + | void main() |
| − | 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; | |
| − | + | } | |
| − | </ | + | </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; }