所以对于我的第二个 C++ 类,我们必须编写一个程序来创建一个由 5 个结构和一个类组成的数组。结构中是一个 int、一个 5 个双精度数组和一个 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 个元素。这就是我所拥有的:
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 中的每个元素输入)输入时,该程序可以工作,但是我的教授给了我们一个我们应该使用的文本文件 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 文件输入我的数据时,我让它输出回第一行(没有字符串),然后剩下的就是一堆疯狂的垃圾。请帮助我!