Avatar billede linuxchristian Nybegynder
16. oktober 2005 - 16:56 Der er 14 kommentarer

Fjern Whitespaces fra streng.

Findes der ikke en let måde at fjerne whitespaces (" ", mellemrum) fra en streng?
Avatar billede arne_v Ekspert
16. oktober 2005 - 17:05 #1
nul termineret char array eller STL string +
Avatar billede bertelbrander Praktikant
16. oktober 2005 - 17:06 #2
Hvis det er en std::string:
  std::string X = " Oste Pop ";
  std::string::size_type n;
  while((n = X.find(' ')) != std::string::npos)
    X.erase(n, 1);
Avatar billede linuxchristian Nybegynder
16. oktober 2005 - 17:07 #3
string s = "3 4 2 5 4 2";

mellemrum skal væk.
Avatar billede bertelbrander Praktikant
16. oktober 2005 - 17:10 #4
Så burde metode kunne bruges.
Avatar billede arne_v Ekspert
16. oktober 2005 - 19:37 #5
bertel>

men der burde være en replace variant til det

fordi erase teknikkens big O egenskaber er ikke tilfredsstillende
Avatar billede bertelbrander Praktikant
16. oktober 2005 - 20:17 #6
Ja, det burde der, men det er det så vidt jeg ved ikke.

Man kan optimere lidt:
  std::string::size_type n = 0;
  while((n = X.find(' ', n)) != std::string::npos)
    X.erase(n, 1);

Så skal der ikke søges forfra hver gang.
Avatar billede arne_v Ekspert
16. oktober 2005 - 20:20 #7
nej - de eksisterende replace'er er ikke meget værd i denne sammenhæng
Avatar billede amma Nybegynder
20. oktober 2005 - 20:20 #8
std::string minString = "1 2 4 3";
minString.erase( std::remove( minString.begin(), minString.end() ), minString.end() );


:)
Asger
Avatar billede amma Nybegynder
20. oktober 2005 - 20:22 #9
ups, lidt for hurtig ...

minString.erase( std::remove( minString.begin(), minString.end(), ' ' ), minString.end() );


sådan :)
Avatar billede bertelbrander Praktikant
21. oktober 2005 - 01:25 #10
>amma, smart!
Avatar billede arne_v Ekspert
21. oktober 2005 - 14:43 #11
både kort kode og effektivt !
Avatar billede bertelbrander Praktikant
21. oktober 2005 - 15:41 #12
Den eneste mangel ved koden er at den ikke er logisk.
Avatar billede arne_v Ekspert
21. oktober 2005 - 20:33 #13
hvis man bruger remove meget så er det nok meget logisk

NB: er det pænt at den her er kaldt remove når man har cstdio remove med en
    noget anden funktionalitet ??
Avatar billede amma Nybegynder
27. oktober 2005 - 15:19 #14
Får man også point for svar? :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester