したがって、2 番目の C++ クラスでは、5 つの構造体とクラスの配列を作成するプログラムを作成する必要があります。struct には、int、5 つの double の配列、および 81 要素の文字配列があります。もちろんユーザーからの情報を取り込む機能もその一つです。その関数は setStructData() と呼ばれます:
void Prog1Class::setStructData()
{
for(int i=0; i<5; i++)
{
cout<<"input an integer, five doubles, and a character array up to 80 characters."<<endl;
cin>>StructArray[i].m_iVal;
for(int j=0; j<5; j++)
{
cin>>StructArray[i].m_dArray[j];
}
cin.ignore('\n');
cin>>StructArray[i].m_sLine;
cout<<"String entered: "<<StructArray[i].m_sLine<<endl;
}
}
次の関数 getStructData() は、構造体の配列の各要素を取得し、配列の 5 つの要素がすべて表示されるまで、その要素を 1 行に、次の行に次の要素を、というようにユーザーに出力します。これは私が持っているものです:
void Prog1Class::getStructData(int index, Prog1Struct *struct_ptr)
{
struct_ptr=&StructArray[index];
cout<<struct_ptr->m_iVal<<" ";
for(int i=0; i<5; i++)
{
cout<<struct_ptr->m_dArray[i]<<" ";
}
cout<<struct_ptr->m_sLine<<endl;
}
このプログラムは、キーボード入力 (structarray の各要素を 1 行で入力すること) で入力すると機能しますが、教授から渡されたテキスト ファイル test.txt を使用すると、次のようになります (他の行とは異なる行の文字配列):
10 1.2 2.3 3.4 4.5 5.6
Test string 1
20 2.3 3.4 4.5 5.6 6.7
Test string 2
30 3.4 4.5 5.6 6.7 7.8
Test string 3
40 4.5 5.6 6.7 7.8 8.9
Test string 4
50 5.6 6.7 7.8 8.9 9.1
Test string 5
まったく別の行に文字配列があるため、プログラムを台無しにしているテキストファイルです。データを入力している方法だと思いますが、修正方法がわかりません。誰でも私を助けることができますか?I/O リダイレクトを使用して test.txt ファイルを使用してデータを入力すると、最初の行 (文字列なし) が出力され、残りは大量のジャンクになります。助けてください!d