【问题标题】:Reading a line from a text file and storing it into a 2D vector in C++从文本文件中读取一行并将其存储到 C++ 中的二维向量中
【发布时间】:2020-03-26 10:21:25
【问题描述】:

这是我的代码,它逐个字符串读取而不是读取一行,并将其存储在 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));

【问题讨论】:

  • 这是jagged 还是矩形数组?
  • 使用std::getline 获取每一行,然后从该行创建一个std::stringstream 以使用上述解决方案。
  • “每个元素”是什么意思?
  • 你卡在哪里了?从文件中读取或创建字符串并将其放入第二维?
  • 请使用输入文件样本编辑您的帖子。

标签: c++ stdvector 2d-vector


【解决方案1】:

我不确定你是否坚持从文件中读取行或如何填充 2d 矢量,所以我给你两个,而不是偷你自己完成事情的成功我把它们分开(它不是太如果你有这个代码,因为你正在学习,很难,所以你会记住)。该代码 sn-ps 运行良好。

这适用于 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];

             }
           }

这是初始化一个二维向量:

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 );
            }
   }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多