1:有一个数组1 23 45 67;储存在txt文件中,我想通过MFC将这组数据读入到编辑框中
2:将编辑框中的数据保存到一个double的Vector中。针对第1步,网上查了一个关于读取文件的程序如下: CFileDialog fileDlg(TRUE);
if(fileDlg.DoModal() == IDOK)
{
CString str;
CFile f;
f.Open(fileDlg.GetFileName(),CFile::modeReadWrite);
f.Read(str.GetBuffer(f.GetLength()),f.GetLength());
f.Close();
GetDlgItem( IDC_INPUTDATA )->SetWindowText( str);
}但读出来的数据是乱码;针对第二步还没有什么好的办法。大家帮想想办法,先谢谢各位了!

解决方案 »

  1.   

    f.Read(str.GetBuffer(f.GetLength()),f.GetLength());
    读出来之后再加上
    int a,b,c,d;
    sscanf(str.GetBuffer("%d %d %d %d"),a,b,c,d );再格式化后CString strRes;
    strRes.Format("%d %d %d %d",a,b,c,d);
    MessageBox(strRes);
      

  2.   

    在读入数据的时候是以字符串的形式,不能直接转成int、double。
    在读入数据的时候还要考虑字符的小数点,比如1.2  0.9 3.8````另外读入的数据长度是不一定的
      

  3.   

    刚刚通过CStdioFile把读出来数据时乱码的问题解决了,不知道大家有没有比较好的方法来解决把字符串变成double数组的方法,或者是vector。要求:
         1:数据长度不定;
         2:会有小数点,0.9等等例如:
        数据是 0.5 1.3 4.6 7.9 0.4(字符串的形式读进来的),之后要变成数组double a={0.5,1.3,4.6,7.9,0.4} 
      

  4.   

    字符串变成double
    -------------
    _tcstod();
      

  5.   

    能具体说一下如何实现么?关键还要把这个字符串进行切分(通过空格)刚刚我试了一下用这个函数,但出现这样的错误““strtod”: 不能将参数 1 从“CString”转换为“const char *””  不知道怎么处理这个问题
      

  6.   

    呵呵,自己解决了。将字符串转化成double的函数,之前是用strtod,编译时总是出错,网上查了一些资料,发现这个函数只能运行在Unicode模式下。之后采用可以在非Unicode模式下的_wtof解决了问题。感谢大家的回复,共同学习,共同学习