NIE DZIAŁA
Kompilator ci wyświetla NIE DZIAŁA? Nie działa, bo nie myślisz. W ogóle. NIE DZIAŁA to nie jest sprecyzowany problem. Poza tym w bloczku kodu masz do wyboru język. Wtedy odpowiednio podświetla składnie. Tak, to tam jest po to, żeby tego używać. Niedługo będzie trzeba ludziom przypominać o oddychaniu.
Jeśli korzystasz z c++11, to kod jest w porządku. Jeśli nie, to .open() przyjmuje tylko const char * i wystarczy jak użyjesz metody .c_str() zwracającej const char *.