2012-04-19 30 views
2

私はまずこれを読んでいただきありがとうございます。C++ c_str文字列の末尾に奇妙な文字を追加する

私はC++でファイルを読み込もうとしています。現在、私はエクスプローラでファイルを選択できるメソッドを持っていて、これを 'std :: string'として返します。私はこのファイルを開く必要がありますが、私はこれのために持っているメソッドは、const char *を使用します。したがって、私は一方を他方に変換する必要があります。

文字列を使ってファイルを読み込む簡単な方法がある場合は、問題全体を解決する方法を教えてください。

str.c_str()を使用して文字列をconst char *に変換すると、最後に奇妙な文字が多く発生します。私は同じ問題で他のトピックを研究しましたが、回答はすべてそのプロジェクトに特有のようです。明らかに私はこれをうれしくしますが、文字列/ベクトルを使ってファイルを開くメソッドはありません。

何か助けていただきありがとうございます。これが発生する場所のコードと出力は、以下に貼り付けられています。

* SOURCE

std::string f; 

       if (LOWORD(wParam) == 1) { 

         f = openFile(); 

         char *fchar = new char[f.size()+1]; // +1 to account for \0 byte 

         //char *fchar = std::vector[1]; 

         std::strncpy(fchar, f.c_str(), f.size()); 

         file1 = fchar; 

         std::cout<<"string size: " << f.size() << std::endl; 
         std::cout<<"string: " << f << std::endl; 
         std::cout<<"fchar: " << fchar << std::endl; 
         std::cout<<"file1: " << file1 << std::endl; 
       } 

OUTPUT

string size: 33 
string: C:\Users\Joseph\Pictures\back_raw 
fchar: C:\Users\Joseph\Pictures\back_raw═²²²²½½½½½½½½¯■ 
file1: C:\Users\Joseph\Pictures\back_raw═²²²²½½½½½½½½¯■** 

答えて

1

:あなたにもあることをコピーする必要がありますか? openFileはどうですか? (返品の種類を知りたい)

「\ 0」を手作業で入れてもらえますか? IMHO、あなたのchar *は最後に\ 0が欠けているだけです...

1

最後に、必要なときに\0を入れてください。

関連する問題