Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Immer diese Strings

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
15.09.2004, 11:23 Uhr
deatho77



Ich habe jetzt das Problem, dass ich eine Zahl in einen String einlesen will, mit einem Wort ist es kein Problem, nur der Integer macht Schwierigkeiten.
Ich habe es auch schon mit reinterp_cast versucht, will aber irgendwie nicht!

Wer kann mir bei dieser Problematik helfen!
Mfg
deatho77
--
Mfg
deatho77

Es gibt keine Probleme nur Lösungen!!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
15.09.2004, 11:42 Uhr
Pablo
Supertux
(Operator)


Wenn du das Format kennst, könntest du sscanf benutzen, oder wenn dein String nur aus einer Zahl besteht atoi bzw. atof
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
15.09.2004, 11:46 Uhr
deatho77



wir sind auf unsere vorgegebenen sachen angewiesen, und da gehören vorallem alles was mit sscanf und mit sprintf usw leider nicht zu.
Es müsste möglich sein, es als funktion zu schreiben!!


Mfg
deatho77

cout << "Schade, dass man mit C++ nicht schweißen kann!!";
--
Mfg
deatho77

Es gibt keine Probleme nur Lösungen!!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
15.09.2004, 11:52 Uhr
Pablo
Supertux
(Operator)



Zitat von deatho77:
wir sind auf unsere vorgegebenen sachen angewiesen, und da gehören vorallem alles was mit sscanf und mit sprintf usw leider nicht zu.
Es müsste möglich sein, es als funktion zu schreiben!!


Mfg
deatho77

cout << "Schade, dass man mit C++ nicht schweißen kann!!";


Und was dürft ihr benutzen? Wie sieht das String aus? Bitte Code!
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
15.09.2004, 11:58 Uhr
deatho77




C++:

#include <iostream>
#include <string>

using namespace std;

//-------Löschen der Leerstellen im Funktionsterm---------------------

void loeschLeerstellen(string &func)
{
  while (func.find(" ") != func.rfind(" "))
    func.erase(func.find(" "), 1);

  func.erase(func.find(" "), 1);
}


//--Positonen des jeweils ersten Operatorzeichens vom gesuchten Typ--


int operatorPosition1 (string func, char opZeich)
{
  int opPos1 = 100;

  if ( func.find(opZeich) < 100)
      opPos1 = func.find(opZeich);
    
  return opPos1;
}

//--Positonen des jeweils zweiten Operatorzeichens vom gesuchten Typ--

int operatorPosition2 (string func, char opZeich)
{
  int opPos2 = 100;

  if ( func.find(opZeich) != func.rfind(opZeich))
      opPos2 = func.find(opZeich, (func.find(opZeich)+1) );
    
  return opPos2;
}


//--Finden des linken Operanden---------------------------------------

int findeOperandLinks (string func, int pos)
{
  int leftOp = 0;
  
  int i,k;
  i = k =1;
  
  while(func[pos-i]>47 && func[pos-i]<58)
  {
    leftOp = leftOp + (func[pos-i]-48) * k;
    k = k*10;
    i++;
  }
  return leftOp;
}

//--Finden des rechten Operanden------------------------------------

int findeOperandRechts (string func, int pos)
{
  int rightOp = 0;
  
  int i = 0;
  int k = 1;

  while(func[pos+i+1]>47 && func[pos+i+1]<58)
    i++;


  while(i>0)
  {
    rightOp = rightOp + (func[pos+i]-48) * k;
    k = k*10;
    i--;
  }

  return rightOp;
}

//--Berechnung und ersetzen eines Terms im String---------------

void ersetzProdukt(string &func, int opPos)
{
  int startPos, endPos, opLinks, opRechts;

  char opTyp = func[opPos];

  opLinks = findeOperandLinks(func, opPos);
  opRechts = findeOperandRechts(func, opPos);

  startPos = opPos - deziStellen(opLinks);
  endPos = opPos + deziStellen(opRechts);

  func.erase(startPos, endPos-startPos+1); //Hier ist das Problem!!!

}

int main()

{

  string test("16 + 9 81 *2  0+4");

  loeschLeerstellen(test);

  int mul1 = operatorPosition1(test, '*');


  ersetzProdukt(test, mul1);

  
  cout << "Formel: " << test << endl << "1.Muliplikationsoperator an Stelle: " << mul1 << endl;


  return 0;

}


--
Mfg
deatho77

Es gibt keine Probleme nur Lösungen!!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
15.09.2004, 12:11 Uhr
Pablo
Supertux
(Operator)


Nimm mir nicht übel, aber das ist Kässe . Spaß bei Seite, wo hast du das Problem?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 15.09.2004 um 12:12 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
15.09.2004, 12:15 Uhr
deatho77



Fangen wa ganz von vorne an.
Ich muss einen Taschenrechner programmieren und ich bin gerade dabei, zu versuchen mit dem string zu rechnen.
Punkt vor strich ist zu beachten usw.

Und das ist halt das, was bisher steht!
Was noch dazu kommt, sind nachher die klassen mit vererbung worin noch klammer beachtet werden und so! Ich stehe also noch recht am Anfang!
--
Mfg
deatho77

Es gibt keine Probleme nur Lösungen!!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
15.09.2004, 12:19 Uhr
Pablo
Supertux
(Operator)


Vielleicht hilft die das weiter:

www.fun-soft.de/showtopic.php?threadid=4669
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
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: