C++ 是否从文本文件中的数组分配数组?

C++ 是否从文本文件中的数组分配数组?,c++,visual-studio-2019,C++,Visual Studio 2019,如何将文本文件中的数组作为变量分配给数组 data.txt { { 123, 456 }, { 789, 101 } } program.cpp #包括“stdafx.h” #包括“PgnFileCreator.h” #包括 #包括 std::ifstream数据数组(“assets/data.txt”,std::fstream::binary); 类型定义结构{ int foo; int-bar; }数据阵列类型; 静态dataArrayType dataTable[IPSUM]=data

如何将文本文件中的数组作为变量分配给数组

data.txt

{
{ 123, 456 },
{ 789, 101 }
}
program.cpp


#包括“stdafx.h”
#包括“PgnFileCreator.h”
#包括
#包括
std::ifstream数据数组(“assets/data.txt”,std::fstream::binary);
类型定义结构{
int foo;
int-bar;
}数据阵列类型;
静态dataArrayType dataTable[IPSUM]=dataArray;
//代码
错误:

error C2440: 'initializing': cannot convert from 'std::ifstream' to dataArrayType[142]'
上下文
代码在“Visual Studio 2019开发者命令提示符v16.5.1”中执行,并被要求不要更改它。

读取一行文本时,应使用
std::getline

std::string  text_line;
std::getline(data_file, text_line);  
看起来您的输入文件是面向行的,所以您必须经常使用
std::getline
模式

在您显示的输入数据中,没有任何内容可以预先告知记录的数量,因此我建议使用
std::vector
。只要您使用
push_back
方法,std::vector将根据需要增长

根据我的经验,使用
std::istringstream
,解析字符串中的简单文本是最容易的:

char open_brace;
char comma;
int foo = 0;
int bar = 0;
const std::string test_data = "{ 123, 456}";
std::istringstream test_stream(test_data);
test_stream >> open_brace
            >> foo
            >> comma
            >> bar;
通过以上基础知识,您应该能够了解如何阅读矩阵。
理想情况下,它应该如下所示:

struct dataType // the "typedef" is not required in C++
{
    int foo, bar;
};
//...
std::vector<dataType> database;
dataType d;
while (data_file >> d)
{
    database.push_back(d);
}
<代码>结构数据类型/ /“TyPulf”在C++中不需要 { int foo,bar; }; //... 向量数据库; 数据类型d; 而(数据文件>>d) { 数据库。推回(d); }

提示:搜索你喜欢的C++来进行操作符重载。 对于一些听起来非常像家庭作业的事情,你还没有展示你已经尝试过的任何东西。在我看来,你的教授给了你一个模板,现在你来这里为我们为你解决家庭作业。而且,来这里尝试多次发送同一个问题是让你的帐户永久删除的好方法,我相信:@searchengine27:公平地说,这个问题是相关的,但不完全相同。@searchengine27一点也不相同。我主要是用NPM开发的,我的任务是自动化C++,我几乎不知道朋友的情况。请不要假设。我真的需要帮助。我更改了参数。感谢您的回复。如果文件中包含int、string和boolean,您建议最好的数据结构方式是什么?每行一条记录。在字段之间使用分隔符,如空格或逗号。您可能需要查看XML或JSON文件格式。