http://ideone.com/4xTOK1
http://ideone.com/M84aVd
Co zrobić by kody działały poparawnie? tzn usuwały spacje z wpisywanego tekstu?
Dlaczego na siłę próbujesz operować na jednym stringu? Na podstawie pierwszego stwórz drugi, w którym pominiesz wszystkie spacje.
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
(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?
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;
}
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;
}
No tak, w stringu nie trzeba deklarowac tego. Chwilowe zaćmienie , albo ze stringiem też mam problem jak widać xD dziękuje
http://ideone.com/tQLOiN ---> napisałam taki program, ale nie wiem czemu się nic nie wyświetla?
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)
Dziękuje :)