从C ++中的文本文件中读取

时间:2011-03-15 13:35:43

标签: c++ c

我是一名java / C#开发人员,我正在尝试编写C或C ++代码来从文本文件中读取数据。这在java和c#中很容易完成,但在c或c ++中却没有。

我正在阅读的文本文件如下所示:

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

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

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

我该怎么做?

2 个答案:

答案 0 :(得分: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

输出:

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

答案 1 :(得分:0)

第一条评论:在解析文件时,阅读通常很有用 文件逐行,然后解析每一行,使用 std :: istringstream,或boost :: regex,或其他任何技术 你先请。我喜欢boost :: regex,因为它立即 表示是否存在语法错误,但是经过精心设计, istream也可以。

无论如何,首先要更精确地指明 格式:总是只有一个字母?这些数字总是如此 只有0和1?每行总是有五个值吗? 在我们知道之前,要说更多内容是非常困难的。