tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
223
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Paper Paper ist offline Mitglied Silber
    Registriert seit
    Sep 2011
    Beiträge
    56
    Guten Morgen

    ich habe ein Problem und zwar folgendes.
    Ich soll den einen Timestamp (der sich in der 1. Spalte befindet) anzeigen lassen.
    Ich schaff es aber nur den Log komplett anzeigen zu lassen, also alle Spalten.
    Die Splaten sind mit leerzeichen getrennt.
    Hat jemand eine idee?

    Danke im vorraus.


    Bis jetzt sieht mein Code so aus:

    Code cpp:
    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
    
    #include <iostream>
    #include <fstream>
    #include <string>
    #include <cstdio>
     
    using namespace std;
     
     
    int main() {
     
    //Öffnet die Datei datei.log
    ifstream file;
    file.open ("datei.log");
     
    //Schleife 
    while (file)
    cout << (char) file.get();
     
    //Datei wird geschlossen
    file.close(); 
     
     
    //Fehler ausgabe wenn die Datei nicht geöffnet/gefunden werden kann
    if (!file.eof()) {
                    cerr << "Fehler beim ausgeben der Datei";}
                    
    //Wenn die Datei geöffnet/gefunden wurde                
    cout <<endl <<endl;
    cout <<"\t Zum schliessen druecken Sie Enter" <<endl <<endl;
     
            getchar();
            return 0;
            
     
        }
    Geändert von Paper (30.09.11 um 10:31 Uhr)
     

  2. #2
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    Hallo,

    einfach das Leerzeichen suchen und nur den Teilstring bis dahin ausgeben:
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    ifstream file("datei.log");
     
    if( file.is_open() )
    {
        string str;
        
        while( getline(file, str) )
        {
            size_t nPos = str.find_first_of(' ');
            cout << (nPos != string::npos ? str.substr(0, nPos) : str ) << endl;
        }
        
        file.close();
    }
    Gruß
    MCoder
     
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

  3. #3
    Paper Paper ist offline Mitglied Silber
    Registriert seit
    Sep 2011
    Beiträge
    56
    Hallo,

    danke für die schnelle antwort
    wenn ich mal so ganz doof fragen darf was heißen diese Zeilen?

    Code cpp:
    1
    2
    3
    4
    
    {
            size_t nPos = str.find_first_of(' ');
            cout << (nPos != string::npos ? str.substr(0, nPos) : str ) << endl;
        }
     

  4. #4
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    Zur Erklärung:

    size_t nPos = str.find_first_of(' ');
    Findet das erste Vorkommen eines Leerzeichens im string und gibt die Position zurück

    cout << (nPos != string::npos ? str.substr(0, nPos) : str ) << endl;
    Du kennst den Bedingsoperator ( ? ) in C? Es wird damit getestet, ob ein Leerzeichen gefunden wurde. Wenn ja, wird der Teilstring bis zum Leerzeichen ausgegen, ansonsten der gesamte String (es gibt dann nur eine Spalte).

    Gruß
    MCoder
     
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

  5. #5
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    Um zu prüfen ob die Datei geöffnet werden konnte, solltest du die is_open Methode verwenden.

    Anstatt die ganze Zeile in einen String einzulesen und darin zu Suchen, ist es auch möglich das erste Wort mit dem >> operator zu lesen und den Rest der Zeile mit ignore zu ignorieren:
    Code cpp:
    1
    2
    3
    4
    5
    6
    
    if (file.is_open()) {
      std::string s;
      while (file >> s && file.ignore(std::numeric_limits<std::streamsize>::max(), '\n')) {
        std::cout << s << std::endl;
      }
    }
    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  6. #6
    Paper Paper ist offline Mitglied Silber
    Registriert seit
    Sep 2011
    Beiträge
    56
    Hallo,

    danke für eure schnelle und gute Hilfe leute das hat super Funktioniert.
     

Ähnliche Themen

  1. MYSQL-Abfrage jeweils nur des erste vorkommen eines Wertes einer Spalte
    Von MC-René im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 11.02.11, 12:41
  2. Antworten: 2
    Letzter Beitrag: 23.04.10, 10:06
  3. Antworten: 6
    Letzter Beitrag: 11.02.07, 22:25
  4. in Excel Spalte auswerten...
    Von stephanfeltel im Forum Office-Anwendungen
    Antworten: 2
    Letzter Beitrag: 21.02.05, 15:32
  5. Antworten: 1
    Letzter Beitrag: 15.02.05, 15:01