2010-08-12 5 views
1

Voir link pour ce dont je parle.argument large CW32 C++ fstream

Je veux utiliser le point 1 dans le lien et

#define tfopen _wfopen 
#define _T(s) L##s 

à faire exactement ce que le lien dit est possible:

std::ifstream file(tfopen("filename.txt", _T("r")); 

Mais gcc (MinGW) 4.4 dit qu'il n'y a pas d'appel correspondant.

Est-ce que je fais mal ou est-ce que l'information dans le lien ci-dessus est incorrecte?

Répondre

1

Vous devez utiliser la macro pour le premier paramètre à tfopen, qui dans votre cas est « filename.txt »

std::ifstream file(tfopen(_T("filename.txt"), _T("r")); 
1

La réponse simple est que vous manque un _T. Cependant, vous pouvez vouloir rethink the entire TCHAR approach et appeler simplement _wfopen (en supposant que le code de Windows seulement).

+0

C'est exactement ce que j'ai décidé de faire. J'ai des fonctions simples toUTF16 et toUTF8 pour interagir avec l'API win32, et pour le reste, j'utilise std :: string (UTF-8). – rubenvb