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 番目の文字など)。私はそれを行う方法を理解することはできません。私に何ができるか知っている人はいますか?

4

2 に答える 2

0

扱っているデータのセットが 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;
}
于 2012-12-04T04:04:45.673 に答える
0

データに空白がなく、すべての記号がカンマで区切られ、文字列の末尾が 1 つの記号「\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;
}
于 2012-12-04T04:17:00.497 に答える