Newsgroup: it.comp.lang.c++
Titolo: Conversione codice

Qualcuno cortesemente mi sa dire come possa fare a tradurre questo codice
VB in C++.
Grazie mille
Open nomefile For Binary As #1
Open nomefile2 For Binary As #2
numLoops = LOF(1) \ MaxSize
LeftOver = LOF(1) Mod MaxSize
Chunk = Space$(MaxSize)
For I = 1 To numLoops
    Get #1, , Chunk
    Put #2, , Chunk
Next
Chunk = Space$(LeftOver)
Get #1, , Chunk
Put #2, , Chunk
Close #2
Close #1

VB in C++.
Ma tu conosci il C++? O ti serve il programmillo fatto...
Luc.

Lo conosco ma non in maniera approfondita.
Avrei la necessità di convertire questo codice.
Grazie Marco.
Luc <TOGL...@katamail.com-TOGLI> wrote in message
v24kitsijnrt0ekpk...@4ax.com...


 Grazie mille
... snip
prova con
{
    istream i(nomefile, ios::in  | ios::binary);
    ostream o(nomefile2,ios::out | ios::binary);
    o << i;
}
--
Andrea Ferro
---------
Brainbench C++ Master. Scored higher than 97% of previous takers
Scores: Overall 4.46, Conceptual 5.0, Problem-Solving 5.0
More info 
http://www.brainbench.com/transcript.jsp?pid=2522556

}
non sono ancora arrivato a leggere il capitolo sui canali dello
stroustrup, ma non sapevo proprio che esistesse un
operator<<(ostream&,istream&): la libreria std non mi finisce mai di
stupire!
Nel caso in esame continua a leggere fino a che non termina il file
(come ci sarebbe da aspettarsi)?
Anto
--
Antonio Cuni, 19 anni, studente
Brainbench C++ Master: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
Guida C/C++ di Programmazione.it: 
http://cpp.programmazione.it

 }
Ma in questo caso fa una copia del file "i" nel file "o" senza aver bisogno 
di "passare" da una stringa?
La copia avviene rispettando gli spazi, a capo etc...?
Grazie 
-- 
Luigi
--
bug windows [5] = {"95", "98", "NT", "Me", "2000"};

 (come ci sarebbe da aspettarsi)?
Piu' o meno. Comunque istream e ostream sono specializzazioni del template
basic_ostream per il tipo char. Il metodo e' pertanto piu' generico di quanto
non credi:
<!--StartFragment-->
  basic_ostream<charT,traits>& operator<<
      (basic_streambuf<charT,traits>* sb);
  Effects:
    If  sb   is   null   calls   setstate(badbit)   (which   may   throw
    ios_base::failure).
1 Gets  characters  from  sb  and inserts them in *this.  Characters are
  read from sb and inserted until any of the following occurs:
  --end-of-file occurs on the input sequence;
  --inserting in the output sequence fails (in which case the  character
    to be inserted is not extracted);
  --an exception occurs while getting a character from sb.
2 If  the  function  inserts  no  characters, it calls setstate(failbit)
  (which may  throw  ios_base::failure  (_lib.iostate.flags_)).   If  an
  exception  was  thrown  while extracting a character, the function set
  failbit in error state, and if  failbit  is  on  in  exceptions()  the
  caught exception is rethrown.
  Returns:
    *this.


 La copia avviene rispettando gli spazi, a capo etc...?
1) Si, ci pensa lui internamente al metodo.
2) Si perche' i file sono aperti entrambe in binario.


Scusa, io ho provato questo codice e con g++ sotto Linux non compila. Mi da 
errori circa la libreria istream e ostream.
Ma credo che sia l'insufficiente conformità allo standard di g++
 
#include <iostream>
istream infile ("/home/luigi/luigi.txt", ios::in  | ios::binary);
ostream outfile ("/home/luigi/copia.txt", ios::out | ios::binary);
int main () {
        outfile << infile;
        return 0;


 ostream outfile ("/home/luigi/copia.txt", ios::out | ios::binary);
... snip
Mai sentito parlare di namespaces?


 Mai sentito parlare di namespaces?
ho aggiunto:
using namespace std;
e non cambia nulla


       (basic_streambuf<charT,traits>* sb);
              ^
Infatti questo operatore prende uno stream buffer e non uno stream e non
esiste conversione implicita.
Ciao,
Nicola

Vedi la mia risposta all'altro subthread.
Ciao,
Nicola

 e non cambia nulla
Infatti il problema non era solo quello, come giustamente ha fatto notare
Nicola. Quello che non capisco e' perche' Nicola stesso non ha dato le
correzioni!
Non ho il compilatore su questa macchina, quindi non garantisco l'assenza di
altre sviste. Comunque prova cosi':
{
    ifstream i(nomefile, ios::in  | ios::binary);
    ofstream o(nomefile2,ios::out | ios::binary);
    o << i.rdbuf();
}
Ovviamente con i necessari include e using.


 esiste conversione implicita.
Appunto. Pero' non capisco perche' non hai postato la soluzione corretta (la
posto nell'altro sub-thread).


 Ovviamente con i necessari include e using.
Ok funziona.
Grazie
