分からなかったので、stringを使おうと思ったのですが、std::vectorなどを含めて、STLがまともに使えません。(記憶があやふやなのですが、#pragma で、無理矢理警告を消すなどをしました。一応動作はしたのですが・・。こんな苦労をせずにできると思っています。)
調べてみると、http://hirose.ai.is.saga-u.ac.jp/misc_technical/vc++.html
に、Microsoftの拡張機能を設定すると、使えるのらしいですが・・。
*注: char* を使えとかは言わないでくださいね。それが面倒なので聞いているので。
StdStringというstd::stringをCStringっぽくラップしたクラスがあります。内部でSTLのstringを使っているので最終的にはSTLを使っていしまう解決方法です。
http://www.dinkumware.com/vc_fixes.html
Dinkumware, Ltd. - Fixes for Library Bugs in VC++ V5.0/V6.0
私もVC6.0ユーザーなのでSTLの苦労はあるのですが^^;(笑)
VC6付属のSTLはバグもち?らしいので上記のURLの資料のように直す必要があるらしいです。
STLport: Welcome!
また、私はVC6付属のSTLに期待していないのでSTLPortというSTLを使用しています。
srcフォルダ内のvc6.makをNMAKE vc6.makとするとコンパイルされます。
http://www.microsoft.com/japan/msdn/vstudio/express/visualc/usin...
Visual Studio 2005 Express Editions: Visual C++ 2005 Express Edition と Microsoft Platform SDK を一緒に使う
VC 2005 Express使うとか。そうすると「文字列」はSystem::String^ a = gcnew String(”ab”);
a += ”bb”;とかでもなんでもありです。
そういう問題のような気がします。違うのかな。これだとMFCを使う理由はほとんどないかと思いますが。そもそもSTL .NETだし。
複雑怪奇なMFCよか楽だと思うけど。
質問文をよく読んでください。
SDKプログラミングをしているといっているでしょう。
>MFCを使う理由はほとんどないかと思いますが。
>複雑怪奇なMFCよか楽だと思うけど。
MFCを使わずに、といっているのです。
もちろん、CStringクラスはMFCのクラスの一部だということは分かっています。char*よりもメモリ確保などで実行速度が遅くなるのも承知の上です。
MFCは複雑怪奇だと思いますよ。でもCStringはchar*使うよりも楽だと思っているので質問をしたのです。
どうして、``VC6.0’’でと言っているのに、何故VC2005の話が出てくるのか、さっぱりわかりません。
ありがとうございます。
ラッパぽいものがあったんですね。
使ってみます。
今、もう一回頑張ってみようと思い、
StdAfx.hの
#include <windows.h>の前に、
#include <afx.h>を入れて、
プロジェクト-設定-MFCのスタティックライブラリを使用をしてみると、エラーなしで、CStringがソースに入れても、エラーがでませんでした。
こんな使い方をしてもよいのかわかりませんが・・。
ご回答ありがとうございます。