Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » string aufdrosseln

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
18.03.2007, 18:39 Uhr
mischa
Fragender


hallo
ich habe hier einen string oder eine zeile in einer datei(wurscht). in der mitte von dem string steht ein * ich muss das was linkst von dem * steht in ein string und das was rechts steht in einen anderen string kopieren.
gibt es vielleicht eine funktion in der STL die das machen kann weil ich hab keine ahnung wonach ich in der msdn suchen soll?
--
Latein Unterricht ist die spätere Rache der Römer an den Germanen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
18.03.2007, 18:44 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


strtok, bzw c++ über find und substr
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
18.03.2007, 18:51 Uhr
CppProgrammer




C++:
#include <iostream>
#include <string>
using namespace std;

string SplitString(char cSeparator, string &str)
{
    string tmp;
    int index = (int)str.find(cSeparator);
    if(index >= 0){
        tmp = str.substr(0, index);
        str.erase(0, index+1);
    }
    else{
        tmp = str;
        str = "";
    }
    return tmp;
}

int main(int argc, char* argv[])
{
    string str = "part1*part2", str1, str2;
    str1 = SplitString('*', str);
    str2 = str;

    cout << str1 << endl << str2 << endl;
    
    return 0;
}


Dieser Post wurde am 18.03.2007 um 18:52 Uhr von CppProgrammer editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
18.03.2007, 19:00 Uhr
mischa
Fragender


das ging ja mal schnell
vielen dank
--
Latein Unterricht ist die spätere Rache der Römer an den Germanen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
18.03.2007, 19:11 Uhr
xXx
Devil


aber dann mach es so ...

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

std::string split_string(const char sep, const std::string& string, std::string& str2)
{
    std::string::size_type pos = string.find_first_of(sep);
    
    if (pos == std::string::npos)
    {
        str2 = "";
        return string;
    }
    str2 = string.substr((pos + 1));
    return string.substr(0, pos);
}

int main()
{
    std::string string = "part1*part2";
    std::string dest;
    std::cout << split_string('*', string, dest) << std::endl;
    std::cout << dest << std::endl;
    
    return 0;
}
... ist zwar net viel besser aber naja ... wenn man den string nochmal nutzen will hat man sonnst nen Problem ...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
18.03.2007, 19:29 Uhr
0xdeadbeef
Gott
(Operator)



C++:
std::string s = "a*b", t;
std::istringstream isstr(s);

std::getline(isstr, t, '*');


?
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
18.03.2007, 20:29 Uhr
xXx
Devil


stimmt aber jetzt hast de das nach dem * vergessen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
18.03.2007, 21:50 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


nö,
nochmal getline aufrufen und du kriegst den rest.

vgl.:

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

int main()
{
std::string s = "a*b", a, b;
std::istringstream isstr(s);

std::getline(isstr, a, '*');
std::getline(isstr, b, '*');

std::cout << a << std::endl;
std::cout << b << std::endl;
}


--
class God : public ChuckNorris { };

Dieser Post wurde am 18.03.2007 um 21:50 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
18.03.2007, 21:57 Uhr
xXx
Devil


hmm stimmt ... naja hatte aber beefy net bei sich drin stehen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
18.03.2007, 22:06 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


kann man sich ja aber denken
--
class God : public ChuckNorris { };
 
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: