Usuwanie spacji

GF
  • Rejestracja:około 8 lat
  • Ostatnio:prawie 8 lat
  • Postów:24
0

http://ideone.com/4xTOK1
http://ideone.com/M84aVd
Co zrobić by kody działały poparawnie? tzn usuwały spacje z wpisywanego tekstu?

Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

Dlaczego na siłę próbujesz operować na jednym stringu? Na podstawie pierwszego stwórz drugi, w którym pominiesz wszystkie spacje.


GF
  • Rejestracja:około 8 lat
  • Ostatnio:prawie 8 lat
  • Postów:24
0

Bo próbuję obejść większy dla mnie problem użycia tablic dynamicznych, czy wektorów (nie wiem jakiej długości ma być nowy string, bo nie wiem ile spacji zostanie usunięte), których nie potrafię do końca ciągle zrozumieć xD

Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

(nie wiem jakiej długości ma być nowy string, bo nie wiem ile spacji zostanie usunięte

Przecież korzystasz ze std::string, więc co za różnica, jakiej długości będzie nowy ciąg znaków?


kq
Moderator C/C++
  • Rejestracja:prawie 12 lat
  • Ostatnio:dzień
  • Lokalizacja:Szczecin
2

Używać idiomatycznego C++.

Kopiuj
#include <iostream>
#include <algorithm>
using namespace std;

int main() {
	string tekst;
	getline(cin, tekst);
    tekst.erase(remove(tekst.begin(), tekst.end(), ' '), tekst.end());
	cout<<tekst;
	return 0;
}

https://ideone.com/uG7JHo

Przy czym jeśli już mowa o idiomie erase-remove, to uważaj na gotcha. Kod z funkcją pomocniczą:

Kopiuj
#include <iostream>
#include <algorithm>
using namespace std;

template<typename Container, typename Predicate>
void erase_if(Container& c, Predicate p)
{
    using std::begin;
    using std::end;
    using std::remove_if;
 
    auto realEnd = end(c);
    auto removedIt = remove_if(begin(c), realEnd, p);
 
    c.erase(removedIt, realEnd);
}

int main() {
	string tekst;
	getline(cin, tekst);
    erase_if(tekst, [](char c){ return c == ' '; });
	cout<<tekst;
	return 0;
}

https://ideone.com/b0ZXvG


GF
  • Rejestracja:około 8 lat
  • Ostatnio:prawie 8 lat
  • Postów:24
0

No tak, w stringu nie trzeba deklarowac tego. Chwilowe zaćmienie , albo ze stringiem też mam problem jak widać xD dziękuje

GF
  • Rejestracja:około 8 lat
  • Ostatnio:prawie 8 lat
  • Postów:24
0

http://ideone.com/tQLOiN ---> napisałam taki program, ale nie wiem czemu się nic nie wyświetla?

Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
1

nowytekst nie ma żadnej długości (jest pusty), zatem nie możesz w nim ot tak se zacząć bazgrać - wykorzystaj nowytekst += "x";

Btw, pisz po ludzku: int i = 0, a nie int i(0)


edytowany 3x, ostatnio: Patryk27
GF
  • Rejestracja:około 8 lat
  • Ostatnio:prawie 8 lat
  • Postów:24
0

Dziękuje :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.