stringのvectorをLPCSTRにキャストしたい – プログラミング – Home

通知
すべてクリア

[解決済] stringのvectorをLPCSTRにキャストしたい


さおり
 さおり
(@さおり)
ゲスト
結合: 23年前
投稿: 31
Topic starter  

さおりといいます。
どなたか教えてください。
環境はWinXP、VC6.0、SDKです。

std::vector<std::string> FileList;

で定義したFileListに、ファイル名を登録していきました。
そこはうまくできたと思うのですが、確認も含め、ListViewに
表示させようとしたら問題です。

LPCSTRにキャストしなきゃと思っていろいろ試した結果
下のようになってしまいました。
一応、それらしい文字列は出てくるのですが、ファイル名の
頭にへへへへがついていて、一部のファイルはファイル名も
出てきません。

for(int i = 0; (unsigned)i < FileList.size(); i++){
  ListCtrl1.InsertItem(0, (LPCSTR)(&(FileList[i])));
}

自分で言うのもなんですが、強引なキャストというかキャストに
なってるかどうかもわかりません。

ただのstringならもっとすっきりできると思うのですが、
stringのvectorの場合、一般的にはどんな風にするものなのでしょうか?

どなたか教えてください・・・。よろしくお願いします。


引用未解決
トピックタグ
monkey
 monkey
(@monkey)
ゲスト
結合: 21年前
投稿: 70
 

ListCtrl1.InsertItem( 0, FileList[i].c_str() );

でいかがでしょうか。


返信引用
SunPac
 SunPac
(@SunPac)
ゲスト
結合: 21年前
投稿: 105
 

LPCTSTRってconst char *のtypedefだったと思います。
std::string::c_str()がまさにそれですね。
(&(FileList[i]))っていうのはvectorに入っているstringのアドレスなので求めている物
とはまったく異なります。

ところでただのstringって何でしょう・・・?


返信引用
さおり
 さおり
(@さおり)
ゲスト
結合: 23年前
投稿: 31
Topic starter  

こんばんは。
monkey様、SunPac様、レスしていただいてありがとうございました。

std::string::c_str()で問題なかったです。

普通VC上でクラスのメンバの関数とかだと、.とか->とか書くと
自動的にウィンドウが現れて選択できるようになりますよね。

vectorのなかのstringだとどうもそれが出ないようで、そういう
使い方はできないのかなと思い込んでしまいました。
ただのstringと書いたのは、vectorにしないstringならc_str()
みたいなのがあるんだろうなと思ってて・・・。
調べようが足りなかったです。

なにはともあれ、解決することができました。
どうもありがとうございました。
今後ともよろしくお願いいたします。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

参考までにですが、

> 普通VC上でクラスのメンバの関数とかだと、.とか->とか書くと
> 自動的にウィンドウが現れて選択できるようになりますよね。
この機能をインテリセンスと言いますが、これは参考程度にした方がいいです。
バグなのか仕様なのかわかりませんが、いつも出てくれるとは限らないようなので。
理想から言うと基本的にはMSDNを参考にするようにして、
インテリセンスは出てきたらラッキーくらいに思っておいた方がいいです。
あの機能便利なんですけれど、ソースが長くなるとエディタの動作が重くなるし、
うまく働かないこともあるしで、頼りすぎると良くないように感じています。


返信引用
さおり
 さおり
(@さおり)
ゲスト
結合: 23年前
投稿: 31
Topic starter  

そういわれると、確かにあれっ出てこないって時があったような気もします。
単純に自分のコードがおかしいときが多いこともありますが・・・。

MSDNは英語の苦手な自分としてはあまり見たくないところですがそうも
言ってられないですよね。がんばります。

ところで、最新のMSDNって、VC6.0のMSDNに比べるとわかりづらい気がするの
ですが、そんなに変わってはいないんですかね。
scribbleのチュートリアルがなくてサンプルしか見当たらなかったんですが
見つけられなかっただけなんでしょうか?
初心者としてはたまに見たいときが出てくるんですよね。

独り言でした。
PATIOさま、レスありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました