按列C ++写入文件列

时间:2017-05-28 07:02:02

标签: c++ file ofstream

我正在努力寻找解决这个问题的方法,并且无法在任何地方找到任何解决方案,但我想它必须是可能的。

我想逐列而不是逐行写入文件。我有一个字符串数组,在程序运行时会更新。字符串看起来像这样" - 4 ---" ," 1 -----"," - 15 ---"," ---- 6 - "等。

这些需要从左到右逐列对齐地写入文件。例如。 :

--1-------
----------
4----15---
----------
-------6--
----------

我正在使用ofstream。我可以等到更新一定数量的字符串,然后逐行将它们打印到文件中,但是当我有两位数的数字时,它会变得混乱,因为必须事先纠正偏移(每个数组索引必须对齐)等等

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

更好的方法是在内存中建模文件,然后将内存写入文件。

如果您的文本表示有5列,我建议使用包含6列的矩阵,并将第6列设为换行符。

#define MAX_ROWS 4
#define MAX_COLUMNS (5+1)

char board[MAX_ROWS][MAX_COLUMNS];

// Initialize the board
for (size_t row = 0; row < MAX_ROWS; ++row)
{
  for (size_t column = 0; column < MAX_COLUMNS - 1; ++column)
  {
    board[row][column] = '-';
  }
  board[row][column] = '\n';
}
board[MAX_ROWS-1][MAX_COLUMNS-1] = '\0'; // Add terminating NULL.

然后您可以通过以下方式打印电路板:

cout << (char *)(&board[0][0]) << endl;

通常,写入内存比写入文件要快得多。此外,您可以以任何格式输出 board ,例如CSV或XML。