エディットボックスからの文字列の取得

[戻る]
amane 2004/10/20(水) 17:13:16
ボタンをおすと以下の
    ifstream fin;
    CFileDialog f(TRUE);
    if(f.DoModal()==IDOK){
        fin.open(f.GetFileName());
        if(fin.fail()){
            AfxMessageBox("ファイルをオープン出来ません");
            fin.close();
        }
        char buf[20];
        
        
        m_sEdit="";
        while(fin.getline(buf,20)){
            m_sEdit=m_sEdit+buf+"\r\n";    
        }
        fin.close();
        
        UpdateData(FALSE);
    }
}
ようにしてエディットボックスに選択したファイルを表示させて、
さらに他のボタンで
CString ss;
m_sEdit.GetWindowText(ss);
として文字列を取得したいのですが、CStringの宣言を確認してくださいとエラーがでてしま
います。m_sEditに表示させるとこまではうまくいきます。どこが間違っているのでしょう
か?
ちなみに、この先はssの内容を配列にいれて計算をさせたいです。例えば
1 1
2 2
3 3
4 4
5 5
などというデータの行列計算等です。

REE 2004/10/20(水) 17:49:09
エディットボックスの内容はm_sEditに既に入っているはずなので、
ss=m_sEdit;
で良いのでは?

ボタンを押す前にエディットボックスが更新されている可能性があれば、
UpdateData(TRUE)を実行しておきます。

GetWindowTextはCWndの派生クラスに使用するものです。

amane 2004/10/20(水) 19:45:41
ありがとうございました。できました。
さらに教えていただきたいのですが、
ssに入れた文字列を配列に格納したいのです。
計算したいので、文字列を数値に変換しないといけないと思うのですが
どうやったらいいのでしょうか?
ひとつの値であればfscanf(ss,"%d",&n)などとやればいいいんですよね?
これの配列への応用の仕方がわからないのです。。。。

RAPT 2004/10/20(水) 21:36:43
GetDlgItemInt()を使ってみてはいかがでしょうか。

int num = GetDlgItemInt(IDC_EDIT);

amane 2004/10/20(水) 23:46:03
[[解決]]
解決しました。ありがとうございます。

古いスレッドには追加発言できません。