Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C/C++] Удаление пробелов из строки


Автор: mr.Anderson 1.3.2008, 11:52
Мой знакомый попросил решить задачу: удалить все пробелы из строки. Я попытался решить сам, но, в силу того, что полностью забыл С++, не смог. Прошу решить эту задачу (дело срочное, до воскресенья).

Автор: chnry 1.3.2008, 12:10
Стучись 393-877-884

Автор: Robin 1.3.2008, 13:09
Код

#include <stdio.h>
int main()
{
    char a1[] = "Hello world i am test programm\0";
    
    for(int a = 0; a1[a]; ++a)
    {
    if(a1[a] != ' ')printf("%c", a1[a]);
    }
    
    return 0;
}



Автор: mr.Anderson 1.3.2008, 18:07
Robin, можно в виде функции оформить код?

Автор: orthrus 1.3.2008, 18:08
Вот на чистом С++:
Код

#include <iostream>

int main(int argc, char* argv[])
{
 std::string str("Hello Big Big World ! ! ! ! ! ! ! ! ! ! ! ! ! ! !");
 std::cout << str << "\n";
 for (std::string::iterator it = str.begin() ; it<str.end(); ++it ){
    if (*it == ' ') str.erase(it);
 }
 std::cout << str << std::endl;
 return 0;
}


вот в виде функции:
Код

#include <iostream>

std::string del_sp(const std::string &in_str){

 std::string str(in_str);
 for (std::string::iterator it = str.begin() ; it<str.end(); ++it ){
    if (*it == ' ') str.erase(it);
 }
 return str;
}

int main(int argc, char* argv[])
{
 std::cout << del_sp("Hello Big Big World ! ! ! ! ! ! ! ! ! ! ! ! ! ! !");
 return 0;
}

Автор: Robin 1.3.2008, 18:59
Код

#include <stdio.h>
void delspace(char str[])
{
    for(int a = 0; str[a]; ++a)
    {
    if(str[a] != ' ')printf("%c", str[a]);
    }
}
int main()
{
  delspace("gugoga sadfkj sadlj safg! ! ");
    return 0;
}


orthrus, у меня твой код не скомпилился второй

Автор: orthrus 1.3.2008, 19:20
Цитата(Robin @  1.3.2008,  18:59 Найти цитируемый пост)
у меня твой код не скомпилился второй 

Какой компилятор? Какие ошибки? У меня на GCC-4.2.2 и на BCB все компилится без проблем.

Автор: Robin 2.3.2008, 12:01
orthrus,  msv 2005
Код

1>------ Build started: Project: somestuf, Configuration: Release Win32 ------
1>Compiling...
1>stdafx.cpp
1>Compiling...
1>somestuf.cpp
1>.\somestuf.cpp(15) : error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'std::string' (or there is no acceptable conversion)
1>        C:\Program Files\Microsoft Visual Studio 8\VC\include\ostream(650): could be 'std::basic_ostream<_Elem,_Traits> &std::operator <<<char,std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const char *)' [found using argument-dependent lookup]
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        C:\Program Files\Microsoft Visual Studio 8\VC\include\ostream(697): or 'std::basic_ostream<_Elem,_Traits> &std::operator <<<char,std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,char)' [found using argument-dependent lookup]
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        C:\Program Files\Microsoft Visual Studio 8\VC\include\ostream(735): or 'std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const char *)' [found using argument-dependent lookup]
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        C:\Program Files\Microsoft Visual Studio 8\VC\include\ostream(782): or 'std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,char)' [found using argument-dependent lookup]
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        C:\Program Files\Microsoft Visual Studio 8\VC\include\ostream(906): or 'std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const signed char *)' [found using argument-dependent lookup]
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        C:\Program Files\Microsoft Visual Studio 8\VC\include\ostream(913): or 'std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,signed char)' [found using argument-dependent lookup]
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        C:\Program Files\Microsoft Visual Studio 8\VC\include\ostream(920): or 'std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const unsigned char *)' [found using argument-dependent lookup]
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        C:\Program Files\Microsoft Visual Studio 8\VC\include\ostream(927): or 'std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,unsigned char)' [found using argument-dependent lookup]
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        C:\Program Files\Microsoft Visual Studio 8\VC\include\ostream(168): or 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::basic_ostream<_Elem,_Traits> &(__cdecl *)(std::basic_ostream<_Elem,_Traits> &))'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        C:\Program Files\Microsoft Visual Studio 8\VC\include\ostream(174): or 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::basic_ios<_Elem,_Traits> &(__cdecl *)(std::basic_ios<_Elem,_Traits> &))'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        C:\Program Files\Microsoft Visual Studio 8\VC\include\ostream(181): or 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::ios_base &(__cdecl *)(std::ios_base &))'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        C:\Program Files\Microsoft Visual Studio 8\VC\include\ostream(188): or 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::_Bool)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        C:\Program Files\Microsoft Visual Studio 8\VC\include\ostream(208): or 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(short)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        C:\Program Files\Microsoft Visual Studio 8\VC\include\ostream(241): or 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(unsigned short)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        C:\Program Files\Microsoft Visual Studio 8\VC\include\ostream(261): or 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(int)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        C:\Program Files\Microsoft Visual Studio 8\VC\include\ostream(286): or 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(__w64 unsigned int)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        C:\Program Files\Microsoft Visual Studio 8\VC\include\ostream(306): or 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(long)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        C:\Program Files\Microsoft Visual Studio 8\VC\include\ostream(326): or 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(__w64 unsigned long)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        C:\Program Files\Microsoft Visual Studio 8\VC\include\ostream(347): or 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(__int64)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        C:\Program Files\Microsoft Visual Studio 8\VC\include\ostream(367): or 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(unsigned __int64)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        C:\Program Files\Microsoft Visual Studio 8\VC\include\ostream(388): or 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(float)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        C:\Program Files\Microsoft Visual Studio 8\VC\include\ostream(408): or 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(double)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        C:\Program Files\Microsoft Visual Studio 8\VC\include\ostream(428): or 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(long double)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        C:\Program Files\Microsoft Visual Studio 8\VC\include\ostream(448): or 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(const void *)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        C:\Program Files\Microsoft Visual Studio 8\VC\include\ostream(468): or 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::basic_streambuf<_Elem,_Traits> *)'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>
1>        ]
1>        while trying to match the argument list '(std::ostream, std::string)'
1>Build log was saved at "file://c:\Documents and Settings\user\Мои документы\Visual Studio 2005\Projects\somestuf\somestuf\Release\BuildLog.htm"
1>somestuf - 1 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Автор: kashmir18 3.3.2008, 00:11
у меня Dev C++ и не роботают ети ваши проги - штото под етот компилятор накиньте плис....

Автор: Robin 4.3.2008, 20:03
Код

#include <stdio.h>
void delspace(char str[])
{
int a;
    for(a = 0; str[a]; ++a)
    {
     if(str[a] != ' ')printf("%c", str[a]);
    }

}
int main()
{
  delspace("gugoga sadfkj sadlj safg! ! ");
  return 0;
}

Автор: anatox91 4.3.2008, 21:09
Код

#include <iostream>
using namespace std;

int main() {
char str[100] = "This is a test.";
int i=0;

while(str[i]) {
              if(str[i] == ' ') i++;
              else {
                   cout << str[i];
                   i++;
                   }
} 

cin.get();
return 0;
}  


Добавлено @ 21:18
а если именно удалить все символы из строки, то что-то типа такого
Код

#include <iostream>
using namespace std;

int main() {
char str[100] = "This is a test.";
char strws[100];   //string without spaces
int i=0;
char c = ' ';

while(str[i]) {
              if(str[i] != c) {
                   strws[i] = str[i];
                   i++;
                   }
} 
strws[i++] = '\0';
cout << strws;

cin.get();
return 0;
}

Автор: Zaff 5.3.2008, 04:03
Код

#include <stdio.h>
#include <stdlib.h>

#define MAX_STR_SIZE 256

void delspc(const char *inStr, char *outStr)
{
    while(*inStr)
    {
       if(*inStr!=' ')
       {
          *outStr=*inStr;
          outStr++;
       }
       inStr++;
    }
}

int main(int argc, char **argv)
{
    char strNoSpaces[MAX_STR_SIZE];

    delspc("This string contains some spaces!", strNoSpaces);
    printf("%s\n", strNoSpaces);

    return EXIT_SUCCESS;
}

Автор: Rififi 9.3.2008, 15:44
Код

std::string remove_spaces(const std::string& source)
{
    std::string s = source;
    s.erase(std::remove(s.begin(), s.end(), ' '), s.end());
    return (s);
}

Автор: andrew_121 23.8.2008, 04:38
Rififi, Самый лаконичный код!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)