Usuwanie spacji

0

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

0

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

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

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?

2

Używać idiomatycznego C++.

#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ą:

#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

0

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

0

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

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)

0

Dziękuje :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1