Wie zu Lesen, eine bestimmte Menge von Zeichen aus einer text-Datei
Habe ich versucht, es zu tun wie dieser
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
char b[2];
ifstream f("prad.txt");
f>>b ;
cout <<b;
return 0;
}
Sollte es Lesen, 2 Charaktere, aber es liest ganze Zeile. Dieser arbeitete auf einer anderen Sprache aber nicht in C++ aus irgendeinem Grund.
- +1 und "Danke" für die Bereitstellung eine kurze, vollständige Beispiel-Programm. sscce.org
- "Dieser arbeitete auf einer anderen Sprache aber nicht in C++ aus irgendeinem Grund." Dies ist einer der schlimmsten Annahmen, die Sie machen können in der Programmierung. Sie sind zwei verschiedene Sprachen, so können Sie das unterschiedliche Verhalten.
- Ja, es ist ziemlich gefährlich, um zu gehen zu denken, dass. Wenn Sie kommen, um C++ von Java (das ist das, was es sieht aus wie aus Ihren Fehler), die Sie wirklich brauchen, um setzen Sie sich mit etwas Lektüre auf Zeiger und arrays, und stellen Sie sicher, dass Sie bekommen, was Los ist, bevor Sie Schießen sich in den Fuß.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie
read()
zum angeben der Anzahl von Zeichen zu Lesen:3
und2
ein bisschen deutlicher, ich würde Ihnen raten, eine benannte Konstante.size_t const BufferSize = 2;
,char b[BufferSize+1] = "";
undf.read(b, BufferSize);
sizeof(b) - 1
(wenn möglich). Code aktualisiert.b
ist ein Zeiger der Zusammenstellung noch funktioniert Sie erhalten einen festen7
auf 64 bit Plattformen. Man könnte einsize
- Funktion für arrays aber mit templates ist es einfach.Einige Dinge ändern sich von Sprache zu Sprache. Insbesondere In diesem Fall, Sie haben führen Sie in Konflikt mit der Tatsache, dass in C++ Zeiger und arrays sind kaum anders. Das array wird übergeben operator>> als ein Zeiger auf char, was interpretiert wird als string-pointer, so dass es tut, was es tut, um char-Puffer (um den Witz zu Lesen, bis die Breite begrenzen oder das Ende der Zeile, je nachdem was zuerst kommt). Ihr Programm sollte zu abstürzt, wenn das passiert, da bist du überlaufende Puffer.