2009-06-18 10 views
2

文字列「Bob Evans」を持つCString変数があります。私は新しいのCStringにオリジナルのCStringの最後までの4位からコピーしたいが、私はトラブルこのためセマンティクスの例を見つけることが生じています:mfc CStringの特定のセクションをコピーします。

CString original("Bob Evans"); 
// Below is what I'm trying to do 
// CString newStr = original.copy(4, original.GetLength()); 

私も、変数のコピーについて考えていますSTL C++の文字列ですが、これを達成することは変換の面でも簡単ではありません。これについてあなたのアドバイスは何ですか?私は文字列をSTL文字列に格納するようにすることもできますが、これはCStringの代わりにSTL文字列にデータを格納するためにたくさんのコードを再構成したくないため、これが最後の手段の1つになります。前もって感謝します。

答えて

7
newStr = original.Mid(4); 
+0

ありがとうございました。 Mid関数は私のためにとてもうまく機能します。なぜMicrosoftがこの機能にMid()という名前を付けるのか、私にはかなり厄介です。 – stanigator

+1

彼らは.Left、.Mid、.Rightを持っています。 –

0

CStringを標準文字列にすることはそれほど難しくありません。唯一の不具合は、MFCプログラムの既定の設定を使用する場合はおそらくUnicodeを使用していることです。つまり、std::stringの代わりにstd::wstringを使用することを意味します。

これはテストしていませんが、デフォルトのコンバージョンではこれが「うまくいく」と考えられます。それ以外の場合は、CStringをLPCTSTRにキャストします。

std::wstring copyOfOriginal(original); 
関連する問題