[C++] Usunięcie wielokrotnych spacji w stringu
Ostatnio zmodyfikowano 2014-01-04 21:54
Kot Temat założony przez niniejszego użytkownika |
[C++] Usunięcie wielokrotnych spacji w stringu » 2014-01-04 13:02:07 Witam. Muszę napisać funkcję do projektu, która usuwa nadmiarowe spacje ze stringu. Niestety, nie mogę używać gotowych funkcji klasy string. Próbowałam coś takiego, jednak nie działa: void usun_spacje( string t ) { for( int i = 0; i < t.lenght() - 1; ++i ) if( t[ i ] == ' ' && t[ i + 1 ] == ' ' ) t[ i ] == 0; }
|
|
pekfos |
» 2014-01-04 13:46:17 Ta instrukcja niczego nie robi. Niestety, nie mogę używać gotowych funkcji klasy string. |
Utwórz pomocniczy string i wstawiaj do niego znaki, które mają być zachowane. Możesz też użyć std::remove_if(). Gotowa funkcja, ale nie z klasy std::string. |
|
00Andre |
» 2014-01-04 13:48:45 Masz tutaj prostą funkcję. #include <iostream> #include <string>
using namespace std;
void UsuwanieSpacji( const string Tekst, string TekstPoUsuwaniu ) { TekstPoUsuwaniu = ""; unsigned startpetla = 0; while( startpetla == 0 ) { for( int a = 0; a < Tekst.length(); a++ ) { if( Tekst.at( a ) == ' ' ) startpetla = 1; else TekstPoUsuwaniu += Tekst.at( a ); } } cout << "Slowo :" << Tekst << endl; cout << "Slowo bez spacji :" << TekstPoUsuwaniu; }
int main() { string slowo = " Tekst test"; string slowo_bez_spacji; UsuwanieSpacji( slowo, slowo_bez_spacji ); return 0; }
|
|
alixir |
» 2014-01-04 14:05:29 Jeśli chcesz tylko wypisać tekst bez podwójnych spacji to możesz użyć funkcji zbliżonej do twojej void usun_spacje( string t ) { for( int i = 0; i < t.length() - 1; i++ ) if( !( t[ i ] == ' ' && t[ i + 1 ] == ' ' ) ) cout << t[ i ]; cout << t[ t.length() - 1 ] << endl; }
|
|
pekfos |
» 2014-01-04 14:26:27 Jeśli chcesz tylko wypisać tekst |
Zamiast std::cout można użyć obiektu std::ostringstream i potem pobrać z niego wynik w postaci stringa. |
|
Kot Temat założony przez niniejszego użytkownika |
» 2014-01-04 17:42:49 Dziękuję za wszelką pomoc, mam tylko jedno pytanie do kodu, który podał 00Andre. Dlaczego jeśli wpiszę cout << slowo_bez_spacji;
w funkcji main, nic się nie wypisuje? Jeśli jest tak jak zrobił 00Andre (wypisanie jest w funkcji UsuwanieSpacji) wszystko jest w porządku. |
|
pekfos |
» 2014-01-04 17:44:52 Bo nie przekazał tego przez referencję. |
|
Kot Temat założony przez niniejszego użytkownika |
» 2014-01-04 21:54:27 No tak, oczywiście.
Powinnam już sobie poradzić. Bardzo dziękuję za pomoc. |
|
« 1 » |