如何逐个字符地读取文件并通过c ++中的array_name [index]访问它

时间:2013-12-24 03:52:40

标签: c++ arrays file vector

我想读取一个文件,以便我可以使用任何类型的存储(例如char arrayvector逐个字符地访问它(我听说矢量更安全,更快)。我的文件大小将在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

1 个答案:

答案 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] << " ";