我想读取一个文件,以便我可以使用任何类型的存储(例如char array
或vector
逐个字符地访问它(我听说矢量更安全,更快)。我的文件大小将在1 MB to 5 MB
左右。我已经尝试了向量,但是它一次读取一个以\n
结尾的单词(我的意思是它一次读取文件一次输出单行)而不是单个字符。我的文件在row x column
明智的上下文中会有所不同,因此我认为不能使用2-D数组。
#include <iostream>
#include <fstream>
#include <stdlib.h>
using namespace std;
const int MAX_SIZE = 1000;
int main()
{
ifstream hexa;
hexa.open("test.txt");
char* hexarray = new char[MAX_SIZE];
while (!hexa.eof())
{
for (int i = 0; i <= MAX_SIZE; i++)
{
hexa >> hexarray[i];
cout << hexarray[i]<<endl;
}
}
delete[] hexarray;
hexa.close();
return 0;
}
使用vector:
vector<string> data;
ifstream ifs;
string s;
ifs.open("test.txt");
while(ifs>>s)
{
data.push_back(s);
}
任何人都可以告诉我如何访问我文件的单个字符吗?
File content:
-6353
-cf
-CF
0
1
-10
11
111111
-111111
CABDF6
-cabdf6
defc
所以我需要array_name[0] = -
,array_name[1] = 6
,...... array_name[n] = c
答案 0 :(得分:2)
最简单的方法:
#include <iostream>
#include<fstream>
#include<vector>
#include<algorithm>
#include<iterator>
//...
std::vector<char> v;
std::ifstream hexa("test.txt");
std::copy( std::istream_iterator<char> (hexa),
std::istream_iterator<char>(),
std::back_inserter(v) );
//...
for(std::size_t i=0 ;i < v.size() ;++i)
std::cout << v[i] << " ";