Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme.

C++ Sting convert

Diskussion: C++ Sting convert im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Hallo zusammen, versuche mich gerade seit ein paar Tagen an c++. Leider fehlt mir zur Zeit anscheinend noch Grundlegendes! ...

Like Tree2Likes
  • 1 Post By bad_alloc
  • 1 Post By blue182

Antwort
Alt 14.11.11, 12:29   #1 (permalink)
 
Registriert seit: 13.10.11
<< MrOizo >> Leistung: Facit NTK
Likes: 0
Standard C++ Sting convert

Anzeige

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!

Geändert von << MrOizo >> (14.11.11 um 16:10 Uhr)
<< MrOizo >> ist offline   Mit Zitat antworten
Alt 15.11.11, 16:40   #2 (permalink)
 
Benutzerbild von bad_alloc
 
Registriert seit: 27.12.07
bad_alloc Leistung: 8086
Likes: 39
Standard

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.
enkore likes this.
__________________
You shoot yourself in somebody else's foot.|Dann gabs da noch den Mathematiker der P?=NP in O(1) erklärte.
|[A]| = p(·,|[A]|)+1
bad_alloc ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 18.11.11, 08:53   #3 (permalink)
 
Benutzerbild von blue182
 
Registriert seit: 21.08.10
blue182 Leistung: Facit NTK
Likes: 10
Standard

Zitat:
Zitat von bad_alloc Beitrag anzeigen
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:
Zitat:
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
Xerox likes this.
blue182 ist offline   Mit Zitat antworten
Antwort

Stichworte
c++, convert, integer, string
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » C++ Sting convert
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
C++ | Convert bmp to jpg | Keiner ne Ahnung? slightlyNERD Code Kitchen 0 11.05.09 16:14
Filesystem convert fat32 to ntfs Cyberm@ster Hardware Probleme 9 20.10.06 09:00
listen: WSocketResolveProto: Cannot convert protocol'udp', Error 11004 eURONYMOUS Windows 0 12.09.05 22:29
Warning: Cannot convert string "-b&h-lucida-medium-r-normal-sans-*-140-*-*- DKing Linux/UNIX 0 26.04.05 18:39
Mac to IP Convert und IP to Mac Convert m4dl355 Internet Allgemein 5 17.03.05 19:21


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61