从文本文件中读取一行并将其存储在 C++ 中的 2D 矢量中

Reading a line from a text file and storing it into a 2D vector in C++

本文关键字:存储 C++ 2D 中的 一行 读取 文件 文本      更新时间:2023-10-16

这是我的代码,它逐个字符串读取而不是读取一行,并将其存储在 1D 向量而不是 2D 中。我想将每一行存储在数组的第一维中,然后将该行中的每个元素存储在数组的第二维中。

std::ifstream fin("triangulation#4.tri");
std::vector<std::string> vec;
//input from file
std::copy(std::istream_iterator<std::string>(fin), std::istream_iterator<std::string>(), std::back_inserter(vec));

我不确定您是否坚持从文件中读取行或如何填充 2d 向量,所以我两者都给你,为了不偷你自己完成工作的成功,我把它们分开(如果你有这段代码,这不是太难,因为你正在学习,所以你会记住(。该代码片段运行良好。

这适用于 Linux 以逐行读取文件到向量中。

string dir = string("."); //dir read for string puzzle
vector<string> files = vector<string>(); //dir read
getdir(dir,files);                     //dir read
for (unsigned int i = 0;i < files.size();i++) //files of parent DIR gets red into array/Vector
{
if (files[i].find(filter) != string::npos)   
{
string out = files[i];
}
}

这是初始化一个 2d 向量:

vector < vector < size_t > > > _card_deck;  

这是一种用字符串填充它的方法:

for(size_t playnum = 0; playnum < players; ++playnum)
{
vector < vector < size_t > > d1;
_card_deck.push_back( d1 );
for(size_t color = 0; color < 4; color++)
{
vector < size_t > d2;
_card_deck[playnum].push_back( d2 );
}
}