[英]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.