簡體   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