繁体   English   中英

在C ++中通过char从文件char中读取

[英]Read from file char by char in c++

我正在尝试从终端读取文件。 文件的第一行和第二行由行号和列组成。 而其他行则由矩阵字符内容组成。 我能够读取第一行和第二行并存储它们的值,并相应地分配矩阵大小。 但我不知道如何阅读其余部分。

  #include <iostream>
  #include <fstream>

  using namespace std;

int main(int argc, char *argv[])
{
ifstream f;
f.open(argv[1]);

int row, col;


f >> row;
f >> col; 

char matrix[row][col];
char c;
int i = 0, j = 0;


while (!f.eof()) {

    //TODO  
 }

f.close();

return 0;
}

EDIT1:文件内容:

11
11
X XXXXXXXXX
X X       X
X XXXXX X X
X     X X X
XXXXX XXX X 
X X  X    X
X X XX X  X
X X     X X
X XXXXXXX X
X         X
XXXXXXXXXXX

尝试这个:

#include <iostream>
#include <string>
#include <fstream>
#include <vector>

int main(int argc, char *argv[])
{
    std::vector<std::string> v;
    std::ifstream in(argv[1]);
    std::string line;

    int row, col;
    in >> row >> col;

    while (std::getline(in, line))
    {
        if (!line.empty())
            v.push_back(line);
    }
}

您没有显示文件内容,所以我认为这应该可行:

int i,j;

for( i=0; i < row; ++i)
 for( j=0; j < col; ++j)
   f >> matrix[i][j] ;

如果文件具有完全由空格分隔的row*col字符,则无需检查文件末尾

按照您更新的姿势,您也需要阅读空白。

for( i=0; i < row; i++)
 for( j=0; j < col; j++)
    f >> std::noskipws >> matrix[i][j] ; // Don't skip white-space

我尚未对此进行测试,但我认为您可能需要做一些其他调整(可能将行增加到12)。

同样要清除noskipws标志,请使用f.unsetf(ios_base::skipws);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM