我是C ++的新手,需要帮助!我目前正在学习如何制作2D阵列或只是1D阵列。
我有一个文本文件,其内容如下所示,而我基本上是想将它们存储到数组中,还是更多?如果使用Struct,我只能有1个数组,还是根据下面文件中的内容有5个单独的数组?
我相信[1,2]可以形成2D数组,但是我该如何实现呢?
下面是我使用结构的代码,我不确定我是否做对了?
请帮助!
=========================================================
Sample Contents in 'HelloWorld.txt' File
=========================================================
[1, 2]-3-4-Hello_World
[5, 6]-7-8-World_Hello
[9, 1]-2-3-Welcome_Back
[4, 5]-6-7-World_Bye
[8, 9]-1-2-Bye_World
=========================================================
My Sample Codes
=========================================================
struct Example()
{
fstream file;
file.open("HelloWorld.txt");
vector<string> abc;
string line;
while(getline(file, line, '-'))
{
abc.push_back(line);
int** a = new int*[abc.size()];
for(int i = 0; i < abc.size(); i++)
cout << abc[i] << endl;
delete [] a;
}
}
我的主要目标是能够将所有4个整数+ 1个字符串存储到数组中,并学习如何使用'[1,2]'->前两个整数点来创建2D数组。
等待建议!谢谢!
答案 0 :(得分:0)
首先,使用c ++功能和数据结构。您可以使用向量代替数组,它更安全且易于使用。其次,您不必使用2D数组,而可以使用矢量的1D数组。我们的数据结构是您的结构向量的向量,您可以读取文件并使用这些值创建结构,然后将其放入向量中。
#include <fstream>
#include <string>
#include <vector>
struct MyData
{
MyData():
num1(0),
num2(0),
num3(0),
num4(0),
str("")
{ }
int num1;
int num2;
int num3;
int num4;
std::string str;
};
void ReadFile(std::vector<MyData>& myVec)
{
std::string fileName = "HelloWorld.txt";
std::ifstream file(fileName, std::ios::binary);
if (file.fail())
{
std::cout << "Error while reading";
perror(fileName.c_str());
}
std::string line;
while (std::getline(file, line))
{
//parse this line
// store suitable values to the struct
// MyData myStruct;
// myStruct.num1 = ...
// myStruct.num2 = ...
// myStruct.num3 = ...
// myStruct.num4 = ...
// myStruct.str = ...
//myVec.push_back(myStruct);
// or you can directly use emplace_back that is more efficent
// but is more complicated for you now..
// you can practice...
}
}
int main()
{
std::vector<MyData> myVector;
ReadFile(myVector);
return 0;
}