Il codice seguente restituisce una stringa letterale in un file con entrambi i flussi anonimi e con nome:Anonymous std :: ofstream gestisce array di caratteri erroneamente
#include <fstream>
using namespace std;
int main()
{
ofstream("testfile") << "test" << endl;
ofstream ofs ("testfile2");
ofs << "test2" << endl;
return 0;
}
Come si può vedere dalla uscita di strace, solo lo stream denominato funziona:
open("testfile", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
write(3, "0x400a91\n", 9) = 9
close(3) = 0
open("testfile2", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
write(3, "test2\n", 6) = 6
close(3) = 0
Inoltre, se si utilizza std :: string anziché letterale, non riesce a compilare.
Perché è questo?
Accettare questa risposta perché la soluzione funziona su C++ 03. Grazie! –