C++ 在C+中读取文本文件+;

C++ 在C+中读取文本文件+;,c++,c,C++,C,我是一个java/C++开发者,我试图编写一个C或C++代码来读取文本文件中的数据。这在爪哇和C++中是很容易完成的,但是在C或C++中是不容易的。p> 我正在读取的文本文件如下所示: a,b,c,d,e 1,0,1,1,0 0,1,1,0,0 0,0,0,1,1 我需要将值存储在两个数组中。 第一个是1D字符数组,它将包含:a b c d e 第二个是2D布尔数组,其中包含: 1 0 1 1 0 0 1 1 0 0 0 0 0 1 1 我该怎么做呢?我建议您至少尝试一下您正在尝

我是一个java/C++开发者,我试图编写一个C或C++代码来读取文本文件中的数据。这在爪哇和C++中是很容易完成的,但是在C或C++中是不容易的。p> 我正在读取的文本文件如下所示:

a,b,c,d,e
1,0,1,1,0
0,1,1,0,0
0,0,0,1,1
我需要将值存储在两个数组中。
第一个是1D字符数组,它将包含:
a b c d e

第二个是2D布尔数组,其中包含:

  1 0 1 1 0
  0 1 1 0 0
  0 0 0 1 1

我该怎么做呢?

我建议您至少尝试一下您正在尝试做的事情,以帮助您开始,以下是您提供的示例数据的基本读数。这个例子应该足够简单,允许您扩展它以满足其他数据集的需要

#include <iostream>
#include <fstream>

int main() {
    const int n_letters = 5;

    const int n_columns = 5;
    const int n_rows = 3;

    char letters[n_letters];
    bool booleans[n_rows][n_columns];

    std::ifstream stream("myfile.txt");
    if (stream) {
        for (int i = 0; i < n_letters; ++i) {
            stream >> letters[i];
            std::cout << letters[i] << ',';
        }
        std::cout << '\n';
        for (int i = 0; i < n_rows; ++i) {
            for (int j = 0; j < n_columns; ++j) {
                stream >> booleans[i][j];
                std::cout << booleans[i][j] << ',';
            }
            std::cout << '\n';
        }
    }
    return 0;
}
和产出:

a,b,c,d,e
1,0,1,1,0
0,1,1,0,0
0,0,0,1,1

第一条注释:在解析文件时,读取它通常很有用 然后使用 std::istringstream、boost::regex或任何其他技术 谢谢你。我喜欢boost::regex,因为它可以立即 指示是否存在语法错误,但经过仔细设计, istream也可以

无论如何,第一件事是更精确地指定 格式:总是只有一个字母吗?数字总是这样吗 只有0和1?每行是否始终有五个值?
直到我们知道,这是很难多说。< /p>可能包含一些有用的信息。C++还是C++?答案是(我认为),或者至少可以是非常非常非常不同的。另外,你的例子中的“a,b,c,d,e”总是由单个字符组成(即没有“foo,bar,baz,qux,qux”)?我建议存储在向量中,如果你以后想切换它,它会给你更多的灵活性。你应该使用二维数组来表示数字,因为这是op要求的(2D==二维)。@Shinnok,根据OP的规格进行修复
a,b,c,d,e
1,0,1,1,0
0,1,1,0,0
0,0,0,1,1