Bonjour,
J'ai un probl�me de gestion de string UNICODE :
J'ai une interface grapique en C# d'ou je r�cup�re une chaine de caract�res � �crire dans un CSV. La partie �criture du fichier se fait depuis un DLL C++. Je passe par un Wrapper en C++/CLI pour faire le lien entre le C# et la DLL C++.
Dans mon Wrapper, je convertis en wstring ma chaine venant du C# :
La fonction ExportCSV est une fonction d'une DLL pur C++:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 int ExportW::doExportCSV(String ^data, String ^csvFile) { std::wstring dataStr(L""); std::wstring csvFileStr(L""); MarshalString(csvFile, csvFileStr); MarshalString(data, dataStr); return exportCSV(&dataStr, &csvFileStr); } void ExportW::MarshalString( String ^source, std::wstring& target) { using namespace Runtime::InteropServices; const wchar_t* chars = (const wchar_t*)(Marshal::StringToHGlobalUni(source)).ToPointer(); target = chars; Marshal::FreeHGlobal(IntPtr((void*)chars)); }
J'ai essay� plusieurs solutions (m�me �crire en binaire). A chaque chaque g�n�ration du fichier CSV, l'�criture s'arr�te au premier caract�re UNICODE
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12 int ExportCSVDLL::exportCSV(std::wstring *data, std::wstring *csvFile) { wofstream ofs; ofs.open(csvFile->c_str()); //ofs << *data; // ofs << data->length() << endl; ofs.write(data->c_str(), sizeof(wchar_t) * data->length()); ofs.close(); return 0; }. J'ai l'impression qu'utiliser des wtring et wofstream n'est pas la bonne fa�on de faire.
Est-ce que qq un a une id�e ? (autre fa�on d'�crire dans le fichier, utiliser autre chose que wtring...)
Merci,
Partager