void clrClass::MemberLoad(array<int>^MyIntArray,String^ str)
   {
   int i=0;
   FileStream^ fs = File::OpenRead(str);
   StreamReader^ sr=gcnew StreamReader(fs);
   MyIntArray[i]=sr->Read();
   sr->Close();
   fs->Close();
   }
比如要读的文件内数据如下:3658 9237 4303 5168 3349 546 5099 5425 9436 775 
读到以后确是:50 9237 4303 5168 3349 546 5099 5425 9436 775 
第一位总是一位50多的数。但是还不全是。偶尔会是完全正确的。求指教。streamreaderc#

解决方案 »

  1.   


     void clrClass::MemberLoad(array<int>^MyIntArray,String^ str)
     {
           FileStream^ fs = File::OpenRead(str);
           StreamReader^ sr=gcnew StreamReader(fs);
           array<String^>^ data=sr->ReadToEnd()->Split(' ');
           for(int i=0;i<data->Length;i++)
               MyIntArray[i]=Convert::ToInt32(data[i]);
           sr->Close();
           fs->Close();
       }健壮性不够,楼主自己加些条件判断吧
      

  2.   

    数据3658 9237 4303 5168 3349 546 5099 5425 9436 775 
    .....
    MyIntArray[i]=sr->Read();//读一个字节
    .....
    字符'3'转换成int==>51 
      

  3.   

    那我想问一下为什么就第一位读取是一个字节,剩下的都是读取的完整的。你发的那段代码不可能得出50 9237 4303 5168 3349 546 5099 5425 9436 775的
    可能有其他代码就不知道了

    哦。MyIntArray[i]=sr->Read();这种写法我也是昨天试的过程发现的。但是结果不太对。想不懂所以问问。
    感谢你的纠正。你提供的代码可以解决问题。只要把data->length改成data->length-1.谢谢指教。