C++ 是否从文本文件中的数组分配数组?
如何将文本文件中的数组作为变量分配给数组 data.txtC++ 是否从文本文件中的数组分配数组?,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
{
{ 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文件格式。