【问题标题】:Read specific information in a text file读取文本文件中的特定信息
【发布时间】:2014-08-31 19:40:33
【问题描述】:

正如我的标题所指出的, 我需要读取文本文件 (C++) 中的信息。 我看到许多涉及组织为数字或字符串列表的文本文件的示例,但在我的情况下,我需要提取文件(example.txt)中的信息,组织如下:

// This is the begin of the text file:
Here_the_coordinates_are_going_to_be_listed
Start
x    y    z
0    0    0
1    0    0
1    1    0
0    1    0
End

理想情况下,我会在“std::vector”中读取并存储“Start”和“End”之间包含的信息,这样矩阵就是一个 N x 3 向量:

matrix[i][j] =  0    0    0
                1    0    0
                1    1    0
                0    1    0

我看了一下教程,到目前为止我得到的只是:

  std::array<std::array<int , 5>, 7> matrix;

  std::ifstream file("../test/matrix.txt");

  for (unsigned int i = 0; i < 7; i++)
  {
  for (unsigned int j = 0; j < 5; j++) {
      file >> matrix[i][j];
  }

这使我可以读取仅写入数字的文件。

非常感谢,

dARIO

【问题讨论】:

  • 你的代码就这些了吗?
  • 不,如果文件很简单,我可以读取和存储矩阵,但在这种情况下,我不知道如何从文本文件的第 5 行填充矩阵。跨度>

标签: c++ text matrix


【解决方案1】:

去看看这里:http://www.cplusplus.com/doc/tutorial/files/ 关于如何读/写文件,然后你可以浏览文件并查找第一个相关字符(或最后一个相关字符,如本例中的 z),然后循环通过所有相关字符并将它们存储在二维数组中(如果您不知道列表的长度,也可以是动态的)

编辑:

所以这里有一个来自该网站的示例,说明如何从上面的链接中读取文本文件(我更新了,对此我感到非常抱歉)所以基本上这个想法就像你在下面看到的那样,你打开文件,然后你只需遍历这里的每一行(我认为你也可以使用 getchar 代替字符,这可能对你更好,但我不太确定它的工作原理,你只需要乱来有了一点,我相信你会明白的 :) ) 所以这里的行只是保存在一个字符串中,然后使用 cout 打印出来,但是你可以进一步操作字符串来找到你的数据,我希望这会有所帮助!如果我不够清楚,请随时再次询问

// reading a text file
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main () 
{
    string line;
    ifstream myfile ("example.txt");
    if (myfile.is_open())
    {
        while ( getline (myfile,line) )
        {
            cout << line << '\n';
        } 
        myfile.close();
     }

     else cout << "Unable to open file"; 

     return 0;
 }

【讨论】:

  • 非常感谢您的回答,肯定会是动态的。目前不幸的是,本教程对我没有帮助。当然由于我的技能很少,但我什至找不到应该帮助我的部分。能具体一点吗?
  • 非常抱歉!!不小心给了你错误的链接!完全是我的错!但我更新了链接和答案,希望它现在有帮助!请随时再次询问,我再次感到抱歉!
  • 没关系,jundl,我也有责任,因为我的问题不清楚。顺便说一句,如果你能帮助我更多,我将不胜感激。实际上我的问题就在那里......你说我必须搞砸。我从一开始就能够阅读我想要的行(我的 .txt 文件中带有 x y z 的行和带有 End 的行)但我被困在那里,因为我找不到存储行号的方法,所以我无法读取坐标并将其存储到矩阵中。 BR PS:我阅读了教程。 PS2:如果有帮助,我可以发布我的程序
  • 所以基本上你有你想要的字符串形式的每一行,但你不知道如何将它们从字符串中获取到数组中,对吗?如果这是您的问题,您可以使用 for 循环并检查该字符是否确实是您要查找的字符之一,如果是,您可以将其放入二维数组中(您可以使用 2计数器变量,一个用于 x,一个用于 y,以跟踪您在数组中的位置)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-09
  • 1970-01-01
  • 1970-01-01
  • 2021-03-20
相关资源
最近更新 更多