【问题标题】:How do I read a specific character in a line from a file?如何从文件中读取一行中的特定字符?
【发布时间】:2012-12-04 04:01:42
【问题描述】:

我正在处理一个文本文件中的属性数据集,看起来像这样:

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 个字母)。我不知道该怎么做。有谁知道我能做什么?

【问题讨论】:

标签: c++ file-io char


【解决方案1】:

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

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;
}

【讨论】:

    【解决方案2】:

    如果你的数据中没有空格,每个符号用逗号分隔,字符串的结尾是一个符号“\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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-04
      • 2016-03-22
      • 2018-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多