2017-02-18 14 views
0

私はC++アプリケーションで作業していましたが、私はSaveFileDialogからディレクトリ名を取得し、同じファイルに複数のファイルを保存するためにテキストを結合する方法を考え出しました私の新しいFileWithPathNameをLPCTSTRに変換しようとするとコードが割り当てられなくなります。C++ SaveFileDiologの情報をLPCTSTRに変換する方法

私はこのサイト全体を検索しており、私が探しているものの本当に明確な例は見つからないようです。誰かが私にこれを明確にしているリンクに向けることができますか、何が間違っているのかを教えてください。 ;-)

  FileInfo^ fi = gcnew FileInfo(saveFileDialog1->FileName); 

      String^ fileNameWithPath = gcnew String(fi->DirectoryName) + "newName.txt"; 

      //LPCWSTR lfileNameWithPath = (LPCWSTR)(pfileNameWithPath[0]); // get temporary LPSTR // fails to get initialized 
      //LPCTSTR lfileNameWithPath = (LPCTSTR)(Marshal::StringToHGlobalAnsi(fileNameWithPath)).ToPointer(); // data returned like Chinese characters. epic fail 
+0

をこれはC++/CLIではなく、C++のです。変更されたタグ。 –

+0

thxバターワースさん。私はどちらを使うべきか議論していました。 –

+0

https://msdn.microsoft.com/en-us/library/bb384865.aspx –

答えて

1

この変換にはいくつかの方法があります。あなたは使用することができます。

#include <msclr/marshal.h> 
using namespace msclr::interop; 
using namespace System; 

String^ fileNameWithPath = gcnew String(fi->DirectoryName) + "newName.txt"; 

marshal_context context; 
LPCTSTR lfileNameWithPath = context.marshal_as<LPCTSTR>(fileNameWithPath); 

よりhere

+0

キー情報はインクルードとトップ使用ステートメントにありました。今はすべてが動作します。重要なアイテムをありがとうございました。 –

関連する問題