C++でのtxtファイル読み込みについて
こんにちは。
C++でのtxtファイル読み込みについて質問させていただきます。
下記のようなコードを使ってtxtファイルを読み込もうとしています。
private: System::Void toolStripButton2_Click(System::Object^ sender, System::EventArgs^ e) {
array<int>^ x=gcnew array<int>(103*300);
array<int>^ y=gcnew array<int>(103*300);
int num=int::Parse(numericUpDown4->Text);
String^ fileName="outputx"+ num.ToString() +".txt";
String^ string1;
StreamReader^ sreader1;
StreamReader^ din = File::OpenText(fileName);
array<String^>^ sub_string;
//指定したファイル名でStreamReaderを設定する
try{
sreader1=gcnew StreamReader(fileName);
}catch(Exception^ ex){
MessageBox::Show("!");
return;
}
//x[i]の読み込み
String^ str;
int count = 0;
while ((str = din->ReadLine()) != nullptr)
{
string1=sreader1->ReadLine(); //StreamReaderに1行読み込む
sub_string=string1->Split(' '); //コンマで分割する
x[count]=Convert::ToInt32(sub_string[1]);
y[count]=Convert::ToInt32(sub_string[2]);
count++;
}
Bitmap^ bmap_dst=gcnew Bitmap(104,301);
for(int j=0;j<301;j++)
for(int i=0;i<104;i++){
bmap_dst->SetPixel(i,j,Color::FromArgb(255,255,255));}
for(int k=0;k<count;k++){
bmap_dst->SetPixel(x[k],y[k],Color::FromArgb(0,0,0));}
pictureBox1->Image = bmap_dst;
pictureBox2->Image = bmap_dst;
//y座標
fileName="outputy"+ num.ToString() +".txt";
String^ string2;
StreamReader^ sreader2;
din = File::OpenText(fileName);
array<String^>^ sub_string2;
//指定したファイル名でStreamReaderを設定する
try{
sreader2=gcnew StreamReader(fileName);
}catch(Exception^ ex){
MessageBox::Show("!");
return;
}
//x[i]の読み込み
String^ str2;
count = 0;
while ((str2 = din->ReadLine()) != nullptr)
{
string2=sreader2->ReadLine(); //StreamReaderに1行読み込む
sub_string2=string2->Split(' '); //コンマで分割する
x[count]=Convert::ToInt32(sub_string2[1]);
y[count]=Convert::ToInt32(sub_string2[2]);
count++;
}
Bitmap^ bmap_dst2=gcnew Bitmap(104,301);
for(int j=0;j<301;j++)
for(int i=0;i<104;i++){
bmap_dst2->SetPixel(i,j,Color::FromArgb(255,255,255));}
for(int k=0;k<count;k++){
bmap_dst2->SetPixel(x[k],y[k],Color::FromArgb(0,0,0));}
pictureBox3->Image = bmap_dst2;
pictureBox4->Image = bmap_dst2;
}
また、読み込むtxtファイルは下記のようなものです。(長いので途中部分のみ)
1 287
1 288
2 107
2 108
2 109
2 110
これをビルドすると”入力文字列の形式が正しくありません”と出てしまいます。
また、下記のようなtxtファイルだと問題なく読み込むことができます。
9 164
9 165
9 166
10 151
10 152
10 153
10 154
プログラミングのどこがいけないのでしょうか?
説明不足かと思いますが、ご回答よろしくおねがいします。
お礼
ありがとうございました。 最近foreachに興味をもち、 forやwhileをみるとforeachに書き換えたい気持ちをおさえられなくて>< 実用では無理にforeachを利用せずにusing+whileで書いた方がよさそうですね。