【问题标题】:Reading txt file to char array读取txt文件到char数组
【发布时间】:2014-12-07 10:26:12
【问题描述】:

我正在尝试将 txt 文件读取到我的 char 数组 [9] [9]。 我尝试了其他主题的一些技巧,但没有奏效。

所以,我有一个这样的示例 file.txt,我自己保存了它,如下所示: 它是 9x9

123------

---456---

------789

等等,这里的空格是''而不是'-'。 当我尝试读取它并再次将其放入我的数组时,它会显示如下:

123456789.

这是我的代码:

system("cls");
ifstream sudoku_read;
string name_read;

cout << "Put a text name: "
getline(cin, name_read);
sudoku_read.open(name_read, ios::in | ios::binary);

for (int i = 0; i < 9;i++)
{
    for (int j = 0; j < 9; j++)
    {

        sudoku_read >> tab[j][i].number;

    }
}

我也试过 noskipws 但它不能正常工作。

【问题讨论】:

  • 使用getline 而不是&gt;&gt;
  • 如何使用getline来char数组?我尝试了很多,我不知道应该怎么做
  • 读取到一个std::string,如果需要的话,传输到一个char数组。
  • 我是编程新手,如果我这样做,你能举个例子如何传输字符串:字符串行; getline(sudoku_read, line);

标签: c++ arrays output


【解决方案1】:
char crs[100];
unsigned vindex = 0;
std::stringstream ss;
ss = sudoku_read.rdbuf();
std::string flstr = ss.str();
for(int i=0; i<strlen(flstr); i++){
    if(flstr[i] != ' '){
      crs[vindex++] = flstr[i];
    }
}
vindex = 0;
for (int i = 0; i < 9;i++)
{
    for (int j = 0; j < 9; j++)
    {
        tab[j][i].number = crs[vindex++] - '0'; //watch out it should be [i][j] by convention
    }
}

由于未指定,我通常将 crs 的大小设置为 100。

假设:

【讨论】:

  • 还有另一种可能,不使用向量,我没有这方面的经验,我现在不应该使用它,我的大学导师暂时禁止这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-07
  • 2017-01-20
  • 1970-01-01
  • 1970-01-01
  • 2016-05-03
  • 1970-01-01
相关资源
最近更新 更多