Newsgroup: it.comp.lang.c++
Titolo: file C contro C++ : 2 a 0

Scusate se posto un quesito simile al precedente ma non ho avut risposta e
quindi riprovo.
Sto cercando disperatamente un modo per leggere un file di testo ed inserire
il tutto in stringhe tipo "string" .
Il mio problema consiste che credendo IMHO (fino ad ora) che il C++ sia
migliore del C non volevo utilizzare nel mio programma nessuna funzione C
(scanf() e printf() per esempio), ho provato:
  fstream f1;
 f1.open( "file.txt",ios::in|ios::out);
 string lin;
 getline(f1,lin,'\n');
f1.close();
ma "lin " non contiene affatto il testo da me cercato. :-((((
Se faccio lo stesso con il C, vetori e "scanf(); tutto funziona bene,
posibile che il C++ debba soccombere rispetto al C? :-((((((((((((
Inoltre dovrei anche tresformare un eventuale dato numerico contenuto nella
stringa in un dato di tipo intero o float, ma non ho trovato nessuna
funzione che accetti un tipo string per effettuare la convrsione (sempre che
riesca a leggere il file di testo con string), ma questa e' un altra storia.
A parte il tipo string e la sua gestione (volendo lo abbandono :-((   ), mi
chiedo perche' accade questo?
credevo possibile che in alcuni casi funzioni C vadano meglio di quelle C++
per piccoli progetti, ma qui non riescono propio a fare l'equivalente neache
con prestazioni molto peggiori, perche?
Vi prego datemi almeno un po di link a materiale per capire, in tutti gli
esempi che ho trovato dovrebbe funzionare, ma non va'.
Ringrazio anticipatamente chiunque abbia la cortesia di rispondermi.
Ciao.

 il tutto in stringhe tipo "string" .
mlonews@mlinux 10 $ cat foo.cxx
#include <fstream>
#include <iostream>
#include <string>
int main() {
  std::ifstream infile("foo.cxx");
  if (infile) {
    unsigned u = 0;
    std::string s;
    while (std::getline(infile, s)) {
      std::cout << "Linea " << ++u << ": " << s << std::endl;
    }
  }
}
mlonews@mlinux 11 $ g++ -ansi -pedantic -Wall -o foo foo.cxx && ./foo
Linea 1: #include <fstream>
Linea 2: #include <iostream>
Linea 3: #include <string>
Linea 4: 
Linea 5: int main() {
Linea 6:   std::ifstream infile("foo.cxx");
Linea 7:   if (infile) {
Linea 8:     unsigned u = 0;
Linea 9:     std::string s;
Linea 10:     while (std::getline(infile, s)) {
Linea 11:       std::cout << "Linea " << ++u << ": " << s << std::endl;
Linea 12:     }
Linea 13:   }
Linea 14: }
mlonews@mlinux 12 $
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Dept. of Physics, Univ. of Padova, Italy          loreti at pd dot infn dot it

 riesca a leggere il file di testo con string), ma questa e' un altra storia.
mlonews@mlinux 19 $ cat bar.cxx
#include <sstream>
#include <iostream>
#include <string>
int main() {
  std::string s("42 3.1415");
  std::istringstream is(s);
  int i;
  double d;
  is >> i >> d;
  std::cout << "i = " << i << ", d = " << d << std::endl;
}
mlonews@mlinux 20 $ g++ -ansi -pedantic -Wall -o bar bar.cxx && ./bar
i = 42, d = 3.1415
mlonews@mlinux 21 $


 esempi che ho trovato dovrebbe funzionare, ma non va'.
Comincia da 
www.programmazione.it
. Li' dovresti trovare perlomeno il
tutorial di Paolo Marotta. Quindi procurati un libro decente sul C++; io
ti consiglio "C++ Primer" 3 edizione di Lippman-Lajoie. Esiste anche in
italiano, ma non conosco l titolo della traduzione.
Ciao,
Nicola


Grazie di tuotto.


Gia' guardato ma non e' sevito a nulla.
Ciao ora provo se i consigli di maurizio funzionano.