0

入力ファイル内のデータを指定された配列に並べ替えるのに問題があります。入力ファイルには、string、double、および int が含まれています。

  • TN 54.5 7
  • KY 65.6 23
  • PA 123.3 30

string、double、int データ型の 14 行があります。データは、ファイルと同じ形式で画面に出力されます。1 つの「文字列配列」を使用してデータを画面に出力できましたが、データが上記の順序で出力されません。私は getline() を使用してみましたが、調査を通じて、単に 'input >> variable[max];' を使用することについて多くの話が見られました。個々の変数ごとに。これは、入力ファイルに含まれていない膨大な数と53の数のみを出力します。私はこれをそれよりも難しくしているような気がします。私の配列が小さすぎて、必要な量のデータを読み取ることができないことを知っています(修正する予定です)。誰かが私のためにこれを理解するように求めていません。正しい方向に向けるだけです。データを目的の配列に並べ替える簡単な方法はありますか?

以下のコードは、すべてのデータ型を読み取るために 1 つの配列で使用したものです。

#include <iostream>
#include <fstream>

using namespace std;

void readData(ifstream& input, string []);
int main()
{
   string data[14];
   char filename[256];
   fstream input;

   cout << "Enter file name: ";
   cint >> filename;

   input.open(filename);
   if (input.fail())
   {                                  
      cout << "opening file fail." << endl;
   }

   readData(input, data);

   input.close();
   return(0);
}             

void readData(ifstream& input, string data[14])
{
    int count;

    count = 0;
    while (count < 14 && !input.eof())
    {
       input >> data[count];
       count << data[count] << endl;
       count++;
    }
}                
4

2 に答える 2

1

なぜ単一のループではないのですか?(ライブはこちら

#include <iostream>
#include <sstream>
#include <vector>

void read_data(std::istream& input, std::vector<std::string>& strings, std::vector<double>& doubles, std::vector<int>& ints) {
  std::string s; double d; int i;
  while( input >> s >> d >> i ) {
    strings.push_back(s);
    doubles.push_back(d);
    ints.push_back(i);
  }
}

int main() {
  std::istringstream i { "FN 3.2 22\nBB 3.48 48\nXX 2.03 172\n" };
  std::vector<std::string> strings;
  std::vector<double> doubles;
  std::vector<int> ints;

  read_data(i, strings, doubles, ints);
  std::cout << "strings:\n";
  for(auto s: strings) std::cout << "  " << s << "\n";
  std::cout << "doubles:\n";
  for(auto d: doubles) std::cout << "  " << d << "\n";
  std::cout << "ints:\n";
  for(auto i: ints) std::cout << "  " << i << "\n";
}
于 2014-04-09T23:02:33.223 に答える