Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » String ohne Leerzeichen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
28.12.2004, 15:49 Uhr
~Spot
Gast


Hallo!

Ich hoffe mir kann jemand weiter helfen.
Ich suche jetzt schon seit einer Stune im Netzt nach einer Möglichkeit unter C++ einen String ohne Leerzeichen einlesen zu können.
Habe bis jetzt aber nichts hilfreiches gefunden.

Wenn ich z.B. Hallo Du! eingebe, möchte ich den Text als HalloDu! in der String Variablen stehen haben.

Vielen Dank für die Hilfe.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
28.12.2004, 16:02 Uhr
virtual
Sexiest Bit alive
(Operator)


Die naivste Methode wäre Zeichenweise einlesen und die Leerzeichen überspringen:

C++:
#include <iostream>
#include <string>

int main() {
    std::string str;
    int c;

    std::cout<<"Bitte String mit Leerzeichen eingeben: "<<std::flush;
    while ((c=cin.get())!='\n')
        if (c!=' ') str += c;

    std::cout<<str<<std::endl;
}



Eine etwas flexiblere Variante wäre, den String zunächst mit Leerezeichen einzulesen und dann die Leerzeichen zu entfernen:


C++:
#include <algorithm>
#include <cctype>
#include <string>
#include <iostream>


std::string remove_spaces(const std::string& str) {
    std::string res;
    std::remove_copy_if(str.begin(), str.end(), std::back_inserter(res), isspace);
    return res;
}


int main() {
    std::string str;

    std::cout<<"Bitte String mit Leerzeichen eingeben: "<<std::flush;
    std::getline(std::cin, str);
    std::cout<<remove_spaces(str)<<std::endl;
}



:/
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
19.05.2005, 13:06 Uhr
~flex
Gast


Habe ein ähnliches Problem.
Ich möchte ein String machen der prüft, ob ein der eingegebenen Emailadresse ein Leerzeichen drin war und dies dann als Fehler ausgibt.

In etwar so:
Eingeb der Adresse.
Sollte zB. abc @gmx.de, da stehen, soll er sagen Fehler.

Bitte Hilfe!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
19.05.2005, 13:35 Uhr
0xdeadbeef
Gott
(Operator)


Schau mal auf www.boost.org vorbei, da gibts ne schöne regex-bibliothek für sowas. Zum Beispiel:

C++:
#include <iostream>
#include <string>

#include <boost/regex.hpp>

int main() {
  std::string s;
  std::getline(std::cin, s);
  std::cout << boost::regex_match(s, boost::regex("[A-Za-z\\d_\\-\\.]*@[A-Za-z\\d_\\-\\.]*[A-za-z\\d].[A-Za-z]*")) << std::endl;
}


Die regex ist jetzt wahrscheinlich nicht vollständig, aber ich hatte nicht den Nerv, die rfc822 durchzuwühlen. Ich glaube, im Perl Cookbook aus dem O'Reilly-Verlag ist ne rfc822-konforme regex enthalten, die könnte man da zum Beispiel einsetzen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
19.05.2005, 23:35 Uhr
virtual
Sexiest Bit alive
(Operator)


Wenn Du nicht die - ohne Frage empfehlenswerten - Boost library nutzen willst: suche das Leerzeichen im String: ist es vorhanden, so ists ein Fehler. Vermutlich billiger als jede RegEx
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
22.02.2006, 14:15 Uhr
Arthasthedeathknight



guten Tag!

ich hab nen Problem mit den Parametern von regex_match.

Ich möchte einen String matchen.

Wenn ich allerdings wie Oxdeadbeef

regex_match(meinstring, regausdr);

schreibe (das ist jetzt nur ein Modellbeispiel!), dann gibt der Compiler folgende Meldung:

E2285 Keine Übereinstimmung für 'regex_match<iterator,charT,traits>(const AnsiString,const regex)' gefunden
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
22.02.2006, 15:09 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


einen AnsiString zu verwenden klappt wahrscheinlich nicht
--
class God : public ChuckNorris { };

Dieser Post wurde am 22.02.2006 um 15:09 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
22.02.2006, 15:15 Uhr
Pler
Einer von Vielen
(Operator)



Zitat:

Ich glaube, im Perl Cookbook aus dem O'Reilly-Verlag ist ne rfc822-konforme regex enthalten, die könnte man da zum Beispiel einsetzen.



Ja, und ich glaube die geht über fast 2 Seiten....
Hab aber mal gehört, dass inzwischen wiederlegt wurde, dass sie wirklich alles richtig macht.

Dieser Post wurde am 22.02.2006 um 15:24 Uhr von Pler editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
22.02.2006, 15:26 Uhr
Arthasthedeathknight



nochmal der exakte code:


C++:
bool check_car_number(const String s)
{
   static const boost::regex e("\\u{1,3}-\\u{1,2} \\d{1,4}[ \\0]*");
   return regex_match(s, e);
}



eigentlich ist es ein String. Das ist eine funktion aus einem Tutorial(, mit der ich testen wollte ob die Library richtig eingerichtet ist).

Aber da der Autor auch "String" klein geschrieben hat, was zu weiteren Fehlermeldungen führte, bin ich mir nicht sicher ob er die Parameter richtig eingesetzt hat. In allen möglichen englischen Beispielen sind mind. 3 ich hab allerings keine Ahnung was ich bei mir noch ergänzen muss.

Dieser Post wurde am 22.02.2006 um 15:29 Uhr von Arthasthedeathknight editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
22.02.2006, 16:25 Uhr
Arthasthedeathknight



prima, ich hab gerade mal

regex_match("VEC-ax-00", e); ausprobiert. und alles ist wunderbar.

Es ist nicht wirklich so, dass regex_match einen konstanten String erwartet oder? Wäre ja auch völlig sinnlos...

hat jemand irgendwie einen Tipp?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: