FAQ:ANSI CPP:удалить из строки все пробелы — различия между версиями
Материал из Весельчак У
(→Как удалить из строки все пробелы при обработке строки символов в Си++) |
RXL (обсуждение | вклад) м |
||
| Строка 1: | Строка 1: | ||
| − | |||
==Как удалить из строки все пробелы при обработке строки символов в Си++== | ==Как удалить из строки все пробелы при обработке строки символов в Си++== | ||
| Строка 5: | Строка 4: | ||
<pre> | <pre> | ||
| − | std | + | std::string EraseSpaces( std::string s ) |
| − | + | { | |
| − | + | s.erase( remove( s.begin(), s.end(), _T(' ')), s.end()); | |
| − | + | return s; | |
| − | + | } | |
| − | + | ||
</pre> | </pre> | ||
'''А со строками CString так:''' | '''А со строками CString так:''' | ||
| Строка 19: | Строка 17: | ||
<pre> | <pre> | ||
| − | void main) | + | 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; | |
| − | + | } | |
</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;
}