Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用文件中的数据从函数返回数组 我得到了一个C++程序,我把信息插入到一个文件中。我有第二个程序来获取数据。我的目标是获取所有数据,并将其作为类型为Student的数组返回。在GetFromFile方法中,我获取信息并可以打印它,但如何返回它并在主函数中使用它: int size; Student *students = getFromFile( "D:\\test.txt", size ); cout << students[0].name;_C++ - Fatal编程技术网

使用文件中的数据从函数返回数组 我得到了一个C++程序,我把信息插入到一个文件中。我有第二个程序来获取数据。我的目标是获取所有数据,并将其作为类型为Student的数组返回。在GetFromFile方法中,我获取信息并可以打印它,但如何返回它并在主函数中使用它: int size; Student *students = getFromFile( "D:\\test.txt", size ); cout << students[0].name;

使用文件中的数据从函数返回数组 我得到了一个C++程序,我把信息插入到一个文件中。我有第二个程序来获取数据。我的目标是获取所有数据,并将其作为类型为Student的数组返回。在GetFromFile方法中,我获取信息并可以打印它,但如何返回它并在主函数中使用它: int size; Student *students = getFromFile( "D:\\test.txt", size ); cout << students[0].name;,c++,C++,这是我的代码: struct Student { string name; char egn[11]; short grade; double avg_grades; int excused, unexcused; }; Student* getFromFile(string filename, int &length) { fstream file; file.open(filename.c_str(), ios::in); file

这是我的代码:

struct Student 
{
   string name;
   char egn[11];
   short grade;
   double avg_grades;
   int excused, unexcused;    
};

Student* getFromFile(string filename, int &length)
{
 fstream file;

 file.open(filename.c_str(), ios::in);

 file >> length;

 Student students[length];

 for ( int i = 0; i < length; i++ )
 {
    file >> students[i].name >> students[i].egn >> students[i].grade >> students[i].avg_grades >> students[i].excused >> students[i].unexcused;
 }

file.close();

return students;
}

int main()
{
int size;
Student *students = getFromFile( "D:\\test.txt", size );

cout << students[0].name;
struct学生
{
字符串名;
char-egn[11];
短等级;
双平均等级;
情有可原;
};
Student*getFromFile(字符串文件名、整型和长度)
{
流文件;
file.open(filename.c_str(),ios::in);
文件>>长度;
学生[长度];
for(int i=0;i>学生[i]。姓名>>学生[i]。egn>>学生[i]。成绩>>学生[i]。平均成绩>>学生[i]。原谅>>学生[i]。无理;
}
file.close();
留学生;
}
int main()
{
整数大小;
学生*students=getFromFile(“D:\\test.txt”,大小);
cout首先,这:

file >> length;
Student students[length];
是非标准扩展。数组的长度应在编译时已知

其次,返回指向数组超出作用域后将释放的内存的指针。应改用
std::vector

#include <vector>

// ...

std::vector<Student> getFromFile(string filename)
{
    // ...
    std::vector<Student> students(length);
#包括
// ...
std::vector getFromFile(字符串文件名)
{
// ...
std::矢量学生(长度);

此外,您不再需要通过引用传递
length
,因为
std::vector
具有成员函数。

getFromFile
中,您将返回一个指向只存在于该函数中的向量的指针。然后,在
main
中,您有一个指向某些无效数据的指针


使用数据后,您应该在
getFromFile
中使用
Student*students=new Student[length];
,并在
main
中使用
。但是像其他人说的那样,使用向量是一个更好的主意。

警告信息非常清楚。您可以使用向量吗?
#include <vector>

// ...

std::vector<Student> getFromFile(string filename)
{
    // ...
    std::vector<Student> students(length);