C++ Sting convert

Hallo zusammen,
versuche mich gerade seit ein paar Tagen an c++.
Leider fehlt mir zur Zeit anscheinend noch Grundlegendes!
Und zwar habe ich folgendes Problem:
ich möchte den TAG von localtime mit dem Tag welcher in einer .txt steht mittels einem if() vergleichen.
Leider komme ich zur Zeit nocht nicht so ganz mit der Konvertierung zu Recht!

bei mir siehts zur Zeit so aus:
Code:
void test()
{
                    int main(int argc, char *argv[]);
                    {
                            time_t Zeitstempel;
                            tm *nun;
                            Zeitstempel = time(0);
                            nun = localtime(&Zeitstempel);

                            stringstream zeit_buendel;
                            zeit_buendel << nun->tm_mday << '.' << nun->tm_mon+1 << '.' << nun->tm_year+1900;
                            ifstream file;
                            string fileName = "Pfad/Datei.txt";

                            file.open(fileName.c_str());
                            if (file)
                            {
                                    string text;
                                    while(!file.eof())
                                    {
                                            string buffer;
                                            getline(file, buffer);
                                            text += buffer;
                                    }

                                    string datum(text);
                                    string TAG = datum.substr( 0, 2); 
                                    string MONAT = datum.substr( 3, 2); 

                                    string localtime2 = zeit_buendel.str();
                                    string datum_localtime(localtime2);
                                    string TAG_local = datum_localtime.substr( 0, 2);
                                    string MONAT_local = datum_localtime.substr( 3, 2);

//                                    if (((MONAT = MONAT_local) && (TAG > TAG_local-15)) || ((MONAT != MONAT_local) && (TAG < TAG_local+15)))
                                    {
                                        cout << "passt:\t\t" << text << "\n";
                                    }
  //                                  else
                                    {
                                        cout << "ACHTUNG:\t\t" << text << "\n";
                                    }
                                    file.close();
                            }
                            else
                            {
                                    cout << "- - - Datei nicht gefunden!\n";
                            }
                            return;
                    }

Zweck: ich möchte vom Programm mittels "ACHTUNG" darauf hingewiesen werden, wenn das Datum aus Datei.txt älter als das Datum der Systemzeit ist.
Zu meinem Problem:
Der compiler meckert zur Zeit natürlich noch, dass man von dem string TAG_local nichts substrahieren kann,was auch verständlich ist! :-)

Also: Wie stelle ich das nun an?? Macht es Sinn z.B den String TAG_local und TAG in einen int zu konvertieren? Wenn ja, wie?? Oder gestalte ich die ganze Sache hier sowieso zu umständlich??

EDIT:Habe es auch hiermit versucht:

string datum(text);
string TAG = datum.substr( 0, 2);
string MONAT = datum.substr( 3, 2);

string localtime2 = zeit_buendel.str();
string datum_localtime(localtime2);
string TAG_local = datum_localtime.substr( 0, 2);
string MONAT_local = datum_localtime.substr( 3, 2);

int TAG_int=0, MONAT_int=0, TAG_local_int=0, MONAT_local_int=0;
TAG_int = atoi(TAG);
MONAT_int = atoi(MONAT);
TAG_local_int = atoi(TAG_local);
MONAT_local_int = atoi(MONAT_local);

Geht jedoch leider nicht!


Sorry aber jeder hat mal klein angefangen! :-)

Danke und viele Grüße!
 
Zuletzt bearbeitet:
In C++ kannst du stringstreams nutzen, wenn du wirklich nen wohlgeformten Integer in dem string hast und nicht etwas wie 15:30:20:
Code:
#include <sstream>
#include <string>
int target = 0;
string source = "42";
stringstream sstr;
sstr << source;
target << sstr;
//jetzt sollte target 42 sein.
 
In C++ kannst du stringstreams nutzen, wenn du wirklich nen wohlgeformten Integer in dem string hast und nicht etwas wie 15:30:20:
Code:
#include <sstream>
#include <string>
int target = 0;
string source = "42";
stringstream sstr;
sstr << source;
target << sstr;
//jetzt sollte target 42 sein.

Hrhr ... diese C++ Menschen ;)

Code:
string foo = "21";
int half_truth = atoi(foo.c_str());
if(half_truth == (42/2)) {
cout << "bar" << endl;
}
atoi, atof und weitere wandeln einen C-String ([unsigned] char Array) in einen Integer, Float ...

Des Weiteren kannst du kannst fscanf nutzen:
fscanf - C++ Reference
Hier ist ein Beispiel fuer scanf. fscanf laesst dich noch den Input-Stream bestimmen:
The call:
int i, n; float x; char name[50]; n = scanf("%d%f%s", &i, &x, name); with the input line:
25 54.32E-1 Hamster assigns to n the value 3, to i the value 25, to x the value 5.432, and name contains the string "Hamster".
fscanf
 
Zurück
Oben