2012-12-04 41 views
1

我带属性的文本文件中的数据集,其看起来是这样的工作:如何从文件中读取一行中的特定字符?

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个字母)。我无法弄清楚如何做到这一点。有谁知道我可以做什么?

+0

都能跟得上,只需逐行阅读,然后选出你想要的角色。 – nhahtdh

+0

使用CSV阅读器。 http://stackoverflow.com/questions/1120140/csv-parser-in-c – djechlin

回答

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; 
} 
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; 
} 
相关问题