Question: I have the following code, running on Suse 10.1 / G++ 4.1.0, and it doesn't write to the file:

```
#include <fstream>
#include <iostream>

int main(){
    std::ofstream file("file.out");
    file << "Hello world";
}

```

The file is correctly created and opened, but is empty.
If I change the code to:

```
#include <fstream>
#include <iostream>

int main(){
    std::ofstream file("file.out");
    file << "Hello world\n";
}

```

(add a `\n` to the text), it works.
I also tried flushing the ofstream, but it didn't work.

Any suggestions?

Answer: 
**The destructor should flush and close the file.**

I am pretty sure, the error is an another place, either

1) You do not check at the right point in time. At which point do you compare the content of the file, "after" the exits, or do you set a breakpoint before the program exits and then you check the files content?

2) Somehow the program crashes before it exits?
You are working on Linux, which is a POSIX-compliant system. The [POSIX standard](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_206) defines what a **line** is:

> 
> A sequence of zero or more non-newline characters plus a
>  terminating newline character.
> 
> 
> 

So without the newline character, the file contains 0 lines and is therefore empty.