le fwrite me dérange donc ici, éxiste t'il un équivalent en C++ svp ?
le fwrite me dérange donc ici, éxiste t'il un équivalent en C++ svp ?
le fwrite me dérange donc ici, éxiste t'il un équivalent en C++ svp ?
file_out.open (checkname, ios::out | ios::binary);
fwrite (buffer, 1, c, f); // je ne sais pas comment remplacer ceci
file_out.close();
file_out.open (checkname, ios::out | ios::binary);
fwrite (buffer, 1, c, f); // je ne sais pas comment remplacer ceci
file_out.close();
file_out.open (checkname, ios::out | ios::binary);
fwrite (buffer, 1, c, f); // je ne sais pas comment remplacer ceci
file_out.close();
file_out.open (checkname, ios::out | ios::binary);
Tu devrais rajouter ios::trunc (c'est sans doute le défaut, mais autant
être explicite).fwrite (buffer, 1, c, f); // je ne sais pas comment remplacer ceci
file_out.write(buffer,c);file_out.close();
Marc, j'obtiens le message d'erreur suivant:
file_out.open (checkname, ios::out | ios::binary);
Tu devrais rajouter ios::trunc (c'est sans doute le défaut, mais autant
être explicite).
fwrite (buffer, 1, c, f); // je ne sais pas comment remplacer ceci
file_out.write(buffer,c);
file_out.close();
Marc, j'obtiens le message d'erreur suivant:
file_out.open (checkname, ios::out | ios::binary);
Tu devrais rajouter ios::trunc (c'est sans doute le défaut, mais autant
être explicite).fwrite (buffer, 1, c, f); // je ne sais pas comment remplacer ceci
file_out.write(buffer,c);file_out.close();
Marc, j'obtiens le message d'erreur suivant:
error C2664: 'std::basic_ostream<_Elem,_Traits>::write' : cannot
convert parameter 1 from 'unsigned char *' to 'const char *'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
Types pointed to are unrelated; conversion requires
reinterpret_cast, C-style cast or function-style cast
mais je comprends pas pourquoi il me parle de 'const char *'
en effet dans mon code buffer est loin d'etre constant.
error C2664: 'std::basic_ostream<_Elem,_Traits>::write' : cannot
convert parameter 1 from 'unsigned char *' to 'const char *'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
Types pointed to are unrelated; conversion requires
reinterpret_cast, C-style cast or function-style cast
mais je comprends pas pourquoi il me parle de 'const char *'
en effet dans mon code buffer est loin d'etre constant.
error C2664: 'std::basic_ostream<_Elem,_Traits>::write' : cannot
convert parameter 1 from 'unsigned char *' to 'const char *'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
Types pointed to are unrelated; conversion requires
reinterpret_cast, C-style cast or function-style cast
mais je comprends pas pourquoi il me parle de 'const char *'
en effet dans mon code buffer est loin d'etre constant.
std::copy_n(buffer,c,ostream_iterator(file_out));
std::copy_n(buffer,c,ostream_iterator(file_out));
std::copy_n(buffer,c,ostream_iterator(file_out));
std::copy_n(buffer,c,ostream_iterator(file_out));
Je dis tout ça de tête sans vérifier, donc sans garantie...
std::copy_n(buffer,c,ostream_iterator(file_out));
Je dis tout ça de tête sans vérifier, donc sans garantie...
std::copy_n(buffer,c,ostream_iterator(file_out));
Je dis tout ça de tête sans vérifier, donc sans garantie...
Marc wrote:std::copy_n(buffer,c,ostream_iterator(file_out));
Je dis tout ça de tête sans vérifier, donc sans garantie...
Eh oui, j'ai oublié un détail :
std::copy_n(buffer,c,std::ostream_iterator<unsigned char>(file_out));
Si ce n'est toujours pas ça, je pense que tu arriveras à corriger...
Marc wrote:
std::copy_n(buffer,c,ostream_iterator(file_out));
Je dis tout ça de tête sans vérifier, donc sans garantie...
Eh oui, j'ai oublié un détail :
std::copy_n(buffer,c,std::ostream_iterator<unsigned char>(file_out));
Si ce n'est toujours pas ça, je pense que tu arriveras à corriger...
Marc wrote:std::copy_n(buffer,c,ostream_iterator(file_out));
Je dis tout ça de tête sans vérifier, donc sans garantie...
Eh oui, j'ai oublié un détail :
std::copy_n(buffer,c,std::ostream_iterator<unsigned char>(file_out));
Si ce n'est toujours pas ça, je pense que tu arriveras à corriger...
Marc wrote:Marc wrote:std::copy_n(buffer,c,ostream_iterator(file_out));
Je dis tout ça de tête sans vérifier, donc sans garantie...
Eh oui, j'ai oublié un détail :
std::copy_n(buffer,c,std::ostream_iterator<unsigned char>(file_out));
Si ce n'est toujours pas ça, je pense que tu arriveras à corriger...
Marc, ios::trunc fait tout foirer. en effet j'enregistre des captures
d'écran par un appui sur une touche, et ca fait 100 copies d'un coup
et de fichiers vide.
En revanche celà fonctionne parfaitement juste avec ios::out |
ios::binary.
bref c'est impecc, une simple 'file_out.write ((const char *)buffer,
c);' et c'est dans la poche, encore merci.
Marc wrote:
Marc wrote:
std::copy_n(buffer,c,ostream_iterator(file_out));
Je dis tout ça de tête sans vérifier, donc sans garantie...
Eh oui, j'ai oublié un détail :
std::copy_n(buffer,c,std::ostream_iterator<unsigned char>(file_out));
Si ce n'est toujours pas ça, je pense que tu arriveras à corriger...
Marc, ios::trunc fait tout foirer. en effet j'enregistre des captures
d'écran par un appui sur une touche, et ca fait 100 copies d'un coup
et de fichiers vide.
En revanche celà fonctionne parfaitement juste avec ios::out |
ios::binary.
bref c'est impecc, une simple 'file_out.write ((const char *)buffer,
c);' et c'est dans la poche, encore merci.
Marc wrote:Marc wrote:std::copy_n(buffer,c,ostream_iterator(file_out));
Je dis tout ça de tête sans vérifier, donc sans garantie...
Eh oui, j'ai oublié un détail :
std::copy_n(buffer,c,std::ostream_iterator<unsigned char>(file_out));
Si ce n'est toujours pas ça, je pense que tu arriveras à corriger...
Marc, ios::trunc fait tout foirer. en effet j'enregistre des captures
d'écran par un appui sur une touche, et ca fait 100 copies d'un coup
et de fichiers vide.
En revanche celà fonctionne parfaitement juste avec ios::out |
ios::binary.
bref c'est impecc, une simple 'file_out.write ((const char *)buffer,
c);' et c'est dans la poche, encore merci.
std::copy_n(buffer,c,std::ostream_iterator<unsigned char>(file_out));
Je ne suis pas sûr que ce soit la bonne solution. L'ostream_iterator
utilise l'opérateur <<, ce qui « formatte ». C'est vrai que dans le cas
de « unsigned char », le formattage ne fait pas grand chose (à condition
que width() n'a pas été positionné auparavant), mais en principe, c'est
faux. ostreambuf_iterator serait plus correct, conceptuellement.
Aussi, pour être 100% sûr, il faudrait faire imbue( std::locale( "C" )
sur le flux avant de s'en servir.
(Chaque fois que j'ai eu
besoins des entrées/sorties binaire, j'ai eu besoin aussi des
fonctionnalités non disponible dans les iostream. Et que c'était des
programmes pour une plateforme bien précise -- Solaris ou HP/UX. Je me
suis donc rétourné vers les fonctions de l'API de la plateforme.)
std::copy_n(buffer,c,std::ostream_iterator<unsigned char>(file_out));
Je ne suis pas sûr que ce soit la bonne solution. L'ostream_iterator
utilise l'opérateur <<, ce qui « formatte ». C'est vrai que dans le cas
de « unsigned char », le formattage ne fait pas grand chose (à condition
que width() n'a pas été positionné auparavant), mais en principe, c'est
faux. ostreambuf_iterator serait plus correct, conceptuellement.
Aussi, pour être 100% sûr, il faudrait faire imbue( std::locale( "C" )
sur le flux avant de s'en servir.
(Chaque fois que j'ai eu
besoins des entrées/sorties binaire, j'ai eu besoin aussi des
fonctionnalités non disponible dans les iostream. Et que c'était des
programmes pour une plateforme bien précise -- Solaris ou HP/UX. Je me
suis donc rétourné vers les fonctions de l'API de la plateforme.)
std::copy_n(buffer,c,std::ostream_iterator<unsigned char>(file_out));
Je ne suis pas sûr que ce soit la bonne solution. L'ostream_iterator
utilise l'opérateur <<, ce qui « formatte ». C'est vrai que dans le cas
de « unsigned char », le formattage ne fait pas grand chose (à condition
que width() n'a pas été positionné auparavant), mais en principe, c'est
faux. ostreambuf_iterator serait plus correct, conceptuellement.
Aussi, pour être 100% sûr, il faudrait faire imbue( std::locale( "C" )
sur le flux avant de s'en servir.
(Chaque fois que j'ai eu
besoins des entrées/sorties binaire, j'ai eu besoin aussi des
fonctionnalités non disponible dans les iostream. Et que c'était des
programmes pour une plateforme bien précise -- Solaris ou HP/UX. Je me
suis donc rétourné vers les fonctions de l'API de la plateforme.)
wrote:std::copy_n(buffer,c,std::ostream_iterator<unsigned char>(file_out));
Je ne suis pas sûr que ce soit la bonne solution. L'ostream_iterator
utilise l'opérateur <<, ce qui « formatte ». C'est vrai que dans le
cas de « unsigned char », le formattage ne fait pas grand chose (à
condition que width() n'a pas été positionné auparavant), mais en
principe, c'est faux. ostreambuf_iterator serait plus correct,
conceptuellement.
zut, ostreambuf_iterator n'est pas documenté dans mes sources
habituelles. Et msdn semble dire qu'il utilise l'opérateur <<, ce qui
est un peu absurde...
Sinon, le fait que le fichier soit ouvert en ios::binary ne change
rien aux histoires de formattage ?
Tiens, moi non plus je n'utilise jamais les iostream pour les fichiers
binaires. read et write conviennent parfaitement à ce genre de
travail.
kanze@gabi-soft.fr wrote:
std::copy_n(buffer,c,std::ostream_iterator<unsigned char>(file_out));
Je ne suis pas sûr que ce soit la bonne solution. L'ostream_iterator
utilise l'opérateur <<, ce qui « formatte ». C'est vrai que dans le
cas de « unsigned char », le formattage ne fait pas grand chose (à
condition que width() n'a pas été positionné auparavant), mais en
principe, c'est faux. ostreambuf_iterator serait plus correct,
conceptuellement.
zut, ostreambuf_iterator n'est pas documenté dans mes sources
habituelles. Et msdn semble dire qu'il utilise l'opérateur <<, ce qui
est un peu absurde...
Sinon, le fait que le fichier soit ouvert en ios::binary ne change
rien aux histoires de formattage ?
Tiens, moi non plus je n'utilise jamais les iostream pour les fichiers
binaires. read et write conviennent parfaitement à ce genre de
travail.
wrote:std::copy_n(buffer,c,std::ostream_iterator<unsigned char>(file_out));
Je ne suis pas sûr que ce soit la bonne solution. L'ostream_iterator
utilise l'opérateur <<, ce qui « formatte ». C'est vrai que dans le
cas de « unsigned char », le formattage ne fait pas grand chose (à
condition que width() n'a pas été positionné auparavant), mais en
principe, c'est faux. ostreambuf_iterator serait plus correct,
conceptuellement.
zut, ostreambuf_iterator n'est pas documenté dans mes sources
habituelles. Et msdn semble dire qu'il utilise l'opérateur <<, ce qui
est un peu absurde...
Sinon, le fait que le fichier soit ouvert en ios::binary ne change
rien aux histoires de formattage ?
Tiens, moi non plus je n'utilise jamais les iostream pour les fichiers
binaires. read et write conviennent parfaitement à ce genre de
travail.