Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » String as Parameter überliefern

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 <
000
11.05.2008, 14:35 Uhr
~JohnnieBoy7
Gast


Hallo Leute,

Ich wollte ein Programm schreiben bei dem ich via Commandozeilenparametern einen Text eingebe und eine Liste von Wörtern. C++ soll mir dann die Wörter aus dem Text mit "-zensiert-" ersetzten. Ich wollte das ungefähr so machen:

dorep.exe "hallo da steht ein Baum" "Baum%da"

Das Programm sollte den übergebenen String der Wörter anhand des Limiters % aufspalten. Die Wörter werden dann mit dem Text, der auch als Parameter übergeben wurde, verglichen und ggf. ersetzt.

Ich habe aber keine Ahnung wie ich das Problem angehen soll. Könnt ihr mir helfen?

Danke im Voraus!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
11.05.2008, 20:07 Uhr
Hans
Library Walker
(Operator)


das ist mal wieder ein typischer Fall von Anfragen, die man eigentlich ignorieren sollte, bzw. für die man eine Lösung posted, die soviel Wissen voraus setzt, das der Fragesteller sie garantiert nicht versteht. (@xXx: Das ist doch Dein Gebiet... )

Ansonsten hast Du das Problem sauber beschrieben. Da Du nicht weisst, wie man das in ein Programm umsetzt, kann man nur den Tip geben, den Umgang mit C++ zu lernen. Alles andere bringt nichts.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
12.05.2008, 17:44 Uhr
xXx
Devil


Hmm erstmal bekommst du ja, wenn du die entsprechende main-Form nimmst, an die Parameter über argv.


C++:
int main(int argc, char** argv)
. Dann steht in argv[1] "Hallo da steht ein Baum", argv[0] "dorep.exe" und in argv[2] steht "Baum%da".

Das ist doch schon ein Ansatz.


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

const std::string censor_string(std::string const&, std::vector<std::string> const&);
void split_string(std::string const&, std::vector<std::string>&);

int main(int argc, char** argv)
{
    if (argc < 2) { std::cerr << "FEHLER: Zu wenige Parameter übergeben!" << std::endl; return  1; }

    std::vector<std::string> forbidden_strings;
    split_string(argv[2], forbidden_strings);

    const std::string original_text(argv[1]);
    std::clog << "Orginal Text: \"" << original_text << "\"\nZensierter Text: \"" << censor_string(original_text, forbidden_strings) << std::endl;
}
so ... censor_string kannst de einfach per replace arbeiten ... split_string ... ganz einfach:

C++:
void split_string(std::string const& source, std::vector<std::string>& destionation)
{
    std::string::size_type pos_begin(0);
    for (std::string::size_type pos_end(source.find('%', 1)); pos_end != std::string::npos; pos_end = source.find('%', pos_begin + 1))
    {
        destination.push_back(source.substr(pos_begin, pos_end - pos_begin));
        pos_begin = pos_end + 1;
    }
}
hab es nicht getestet ... kann sein das noch das '%' Zeichen drin ist ... dann pass die substr-Länge einfach an.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
12.05.2008, 21:46 Uhr
0xdeadbeef
Gott
(Operator)


Ich würd mich ja für das String-Splitten eher eines Stringstreams bedienen. Wie dem auch sei, das sieht mir doch ziemlich hausaufgabig aus, also will ich entweder ein bisschen Eigeninitiative oder einen geschlossenen Thread sehen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ 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: