Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Kleines Pogrammpoblem

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
16.11.2005, 21:23 Uhr
~Karldin Shinowa
Gast


Mal zu erklärung was ich mit dem pogramm will:
Ich hab eine datei input aus der sollen alle zeichen ausgelesen werden in das Feld(vector) gespeichert werden und dann nach dem schema wert1=, wert2=...... ausgegeben werden. Ich bin im pogrammieren noch kein pro aber das is was ich mir halt hier gedacht habe:
PS: sagt mir ob ich gut kommentiere


C++:
#include<fstream>  //für Dateifunktionen
#include<string>   //damit ich string verwenden kann für Dateiname
#include<iostream> //wohl klar
#include<vector>   //für das Feld wo ich es speichere
#include<stdio.h>  //getchar()

int main(){
  vector<char> FELD;            //das Feld ich weiß hier noch nicht wie groß
  string Name("INPUT.txt");     //Name der Datei definieren
  ifstream INPUT(Name.c_str()); //Datei definieren und öffnen
  char c;                       //Zwischenspeichervariable

  //alle einlesen in c zwischenspeichern und dann ins feld rein
  while(INPUT.get(c)){
    FELD.push_back(c);
  }

  //alle ausgeben
  for(int i;i<FELD.size(); i++){
    cout<<i<<" :"<<FELD[i]<<endl;
  }

  getchar();
}




Bearbeitung von typecast:
cpp-Tags gesetzt


Bearbeitung von 0xdeadbeef:
Code sinnvoll eingerückt, zwecks Lesbarkeit

Dieser Post wurde am 17.11.2005 um 10:00 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
16.11.2005, 22:43 Uhr
~Karldin Shinowa
Gast


Hat sich erledigt...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
17.11.2005, 00:05 Uhr
typecast
aka loddab
(Operator)


Hallo,

1.) Bitte setz in Zukunft die cpp-Tags. Das macht den Code besser lesbar.
2.) Stell bitte in Zukunft eine Frage Du hast dein Problem ueberhaupt nicht beschrieben *denk*
3.) Wenn du dein Problem selbst geloest hast, solltest du auch jeweils kurz die Loesung posten. Vielleicht hat irgendwann jemand das selbe/ein aehnliches Problem und kommt nicht von selbst auf die Loesung

Was das kommentieren angeht:

Du hast ganz eindeutig zuviel kommentiert. Im Grunde genommen solltest du nur ganz kurz beschreiben was der Code macht (wenn ueberhaupt). Was passiert kann man im Code nachlesen.
Dokumentier lieber, _warum_ du etwas auf diese Art und Weise gemacht hast
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
17.11.2005, 10:01 Uhr
0xdeadbeef
Gott
(Operator)


Der einzige Fehler, der mir so direkt ins Auge springt, ist, dass die ganzen STL-Bezeichner nicht mit std:: gepräfixt wurden und eine using-Direktive, die das überflüssig machen würde, fehlt.

C++:
using namespace std;


unter die Header-includes löst das. Ansonsten,

C++:
#include <stdio.h>


hat in C++-Code nichts zu suchen, da heißt das

C++:
#include <cstdio>


...auch, wenn die meisten C++-Compiler stdio.h kennen, das ist ein C-Header, kein C++-Header. Es ist mindestens schlechter Stil, ihn in C++-Code zu benutzen.

Ansonsten hätte ich den Code wohl eher so geschrieben:

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

int main() {
  std::string zeile;
  std::ifstream in("input.txt");

  while(std::getline(in, zeile)) {
    for(std::string::size_type i = 0; i < zeile.size(); ++i) {
      std::cout << i << ": " << zeile[i] << '\n';
    }
  }

  std::cin.get();
}


...aber das nur am Rande. Der Unterschied ist, dass bei großen Dateien deutlich weniger Speicherverbrauch auftritt, wenn nicht die ganze Datei, sondern jeweils nur eine Zeile gebuffert werden muss. Im Falle von Binärdateien ist das natürlich was anderes, hier empfiehlt es sich, in Blöcken fest definierter Größe (ie 512 Byte) zu lesen. 512 Byte deshalb, weil ein Block auf einer Festplatte typischerweise diese Größe hat.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 17.11.2005 um 10:10 Uhr von 0xdeadbeef editiert.
 
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: