2016-04-11 14 views
-3

名前、社会保障番号、電話のリストを含む.txtファイルがあります。名前をアルファベット順に並べる必要がありますが、どうすればいいのか分かりません。どんな助け?ファイルから単語のリストを作成するC++

私のコードは、すでにファイルの内容を正しく読み込んでいますが、私は立ち往生しており、さらに進むことができます。

#include <iostream> 
#include <fstream> 
#include <string> 
using namespace std; 

int main() { 
    string line; 
    ifstream myfile ("basededados.txt"); 
    if (myfile.is_open()) { 
     while (getline (myfile,line)) 
     { 
      cout << line << '\n'; 
     } 
     myfile.close(); 
    } 

    else cout << "Unable to open file"; 


    return 0; 
    } 
+0

が必要になる場合があります。既にこれを行う方法の多くの、多くの、多くの例があります。 – NathanOliver

+0

ファイルにデータがどのように格納されているかを表示できますか? デモ用にいくつかの行を投稿できます:) –

+0

'std :: istringstream is(line);'と 'std :: vector words;'を進めることをお勧めします。 –

答えて

1

私はアルファベット順に名前を注文する必要がありますが、私はそれを行うことができる方法の任意のアイデアを持っていません。

あなたは正しいコードを読んでいるので、データを置く場所が必要になります。私は、キーとして使用すると、名前を維持します、のstd ::マップを提案し、セキュリティ番号と携帯電話とのペア値として:キーとして(マップコンテナが発注される

std::map<std::string, std::pair<std::string,std::string>> data; 

いるので、それを反復処理するときに名前を持っていますが)自然にソートされます。

今度はwhileループ内の各行について、各データレコードを解析する必要があります。最も良い方法はstd::istringstreamを使用することです。

あなたの宿題のように見えるので、私は完全なコードを書いていません(おそらく誰かがそうするでしょう)。

[編集]

実際にデータベースが名前を繰り返し含まれている可能性があり、そのような場合には、あなたがデータを収集し、その何とかして、ソートのデータを格納する必要があるとしているstd::multimap代わりのstd::map

+0

シンプルなアルファベットの場合、 'std :: vector'と' std :: list'も動作します。 –

+0

@ThomasMatthews 'std :: list'には、名前フィールドにソートされた要素をリストするイテレータを持つ各レコード{name、security num。、phone}と' std :: vector'が含まれていますか? – marcinj

関連する問題