我正在努力寻找解决这个问题的方法,并且无法在任何地方找到任何解决方案,但我想它必须是可能的。
我想逐列而不是逐行写入文件。我有一个字符串数组,在程序运行时会更新。字符串看起来像这样" - 4 ---" ," 1 -----"," - 15 ---"," ---- 6 - "等。
这些需要从左到右逐列对齐地写入文件。例如。 :
--1-------
----------
4----15---
----------
-------6--
----------
我正在使用ofstream。我可以等到更新一定数量的字符串,然后逐行将它们打印到文件中,但是当我有两位数的数字时,它会变得混乱,因为必须事先纠正偏移(每个数组索引必须对齐)等等
感谢您的帮助
答案 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。