如何从文件中读取一行中的特定字符?

时间:2012-12-04 04:01:43

标签: c++ file-io char

我正在使用文本文件中的属性数据集,如下所示:

e,x,y,w,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,s,g
e,f,y,y,t,l,f,c,b,w,e,r,s,y,w,w,p,w,o,p,n,y,p
e,b,s,w,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,n,s,g
e,b,s,w,t,a,f,c,b,w,e,c,s,s,w,w,p,w,o,p,k,s,m
e,x,y,n,t,l,f,c,b,w,e,r,s,y,w,w,p,w,o,p,k,y,g
e,b,s,w,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,k,s,g
e,x,f,g,f,n,f,c,n,g,e,e,s,s,w,w,p,w,o,p,n,y,u
e,b,s,y,t,l,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,s,g

现在,我正在试图弄清楚如何轻松地从给定列中读取字符(例如,每行上的第5个字母)。我无法弄清楚如何做到这一点。有谁知道我能做什么?

2 个答案:

答案 0 :(得分:0)

考虑到您正在处理的数据集只有一个字符而不是任意大小,您可以推断出每个字符后跟一个逗号,所以

  

1个字符= 2个文件空间计算所需的字符

如果您想阅读第5行,那么它将是文件中的(4*2 + 1)点。您可以将该行读入字符串并在字符串中找到它,或者每次只从文件中取一个字符,直到达到所需的数字。

cout << "What column would you like to read from? ";
cin >> num;
int Length = (num - 1) * 2 + 1;
char ColumnLetter;
for(int i = 0; i < Length; i++)
{
  inFile >> ColumnLetter;
}

答案 1 :(得分:0)

如果数据中没有空格,则每个符号用逗号分隔,字符串的末尾是一个符号“\ n”,你可以这样做:

#include <iostream>
#include <fstream>

using std::ifstream;

ifstream file;
const int LINE_WIDTH; //number of your chars in line (without commas)

char GetFromFile(int row, int position) //row and position indexes start from 0!
{
  file.seekg(row * (LINE_WIDTH * 2) + position * 2);
  return file.get();
}

int main()
{
    file.open("data.txt", ios::binary);

    char c = GetFromFile(10, 3);

    file.close();
    return 0;
}