2017-12-03 11 views
-1

私はテキストファイルにあるものを読み込んだ後、ベクトルの2つの要素の間で場所を入れ替えるプログラムを作成しようとしています。ベクターの問題、少し手が多分?

テキストファイルは、この順序を持​​っている:私はちょうど第一及び第二の間の場所を変更する必要があることを把握NAME SURNAME REGISTRATION_NUMBERとCITY_ADRESS 、多分100人のリストです...順序は同じであるので私は2を増やすので、最初の名前にもう一度行きます...しかし、それは私の最大の問題ではありません...

私はgetl​​ineを使うと、ベクトル魔女の最初の要素のすべてが奇妙で、そのため私は名前の場所を変更することはできません。私はそれを変更する方法を理解できません...私はそれがスペースを発生すると、要素を変更するようにしたいと思います。

私が得ることができるすべての援助に感謝します。

#include <iostream> 
#include <fstream> 
#include <string> 
#include <vector> 

using namespace std; 

int main() { 
    vector<string> line; 
    string information; 
    ifstream myfile ("Namn.txt"); 
    if (myfile.is_open()) { 
    while (getline(myfile, information)) { 
     line.push_back (information); 
    } 
    myfile.close(); 
    }else cout << "Filen gick inte att öppna!"; 

    for (unsigned int i = 0; i < line.size(); i++) { 
    cout << line[i] << endl; 
    } 
    return 0; 
} 
+0

[ 'std名前空間を使用して;'悪い習慣である](https://stackoverflow.com/q/1452721/2176813)、それを使用することはありません。 – tambre

+0

私は実際にそれを使用しないことを知っているが、それは私が今持っている最大の問題ではない:)最後に変更することができます。 –

+0

はすべてテキストファイルの1行にあるフィールドですか?そうであれば、新しい行にそれぞれのフィールドを入れ、2人の別々の人を分ける余分な行を付けたり、行全体を読んで手動でベクトルに分けたりすることができます。 –

答えて

0

あなたはこのように、あなたが好きなfstreamを使用してファイルを読み込むと同時に解析し、その後、ベクトルのベクトルの情報のすべての要素を入れた後、あなたはとにかく情報のビットをミックスして一致させることができますすることができます:

#include <fstream> 
#include <string> 
#include <iostream> 
#include <vector> 

int main() 
{ 
    std::string name; 
    std::string surname; 
    std::string registration; 
    std::string location; 
    std::vector<std::vector<std::string>> information; 

    std::ifstream myfile("Namn.txt"); 

    while (myfile >> name >> surname >> registration >> location) 
     information.push_back({name, surname, registration, location}); 

    // print 

    for (auto const &info : information) 
    { 
     std::cout << info[1] << " " << info[0] << " " << info[2] << " " << info[3] << std::endl; 
    } 

    return 0; 
} 

プリント:

Andersson Rune 12873645 Stockholm 
Isaksson Peter 12873645 Uppsala 
Gustavsson Fredrik 12873645 Gothenborg 
+0

なぜベクター<ベクター>の情報ですか?数字は姓と一緒になっているので動かない。 –

+0

最初のベクトルはファイル内の行のベクトル、2番目のベクトルは行内の単語のベクトルです。したがって、2行目の姓にアクセスするには、情報[1] [1] 'または登録 - '情報[1] [2] 'などの場合は、 –

+0

の名前と姓を入れ替えることができると思った@AllamoOlsson '>>数字は姓と一緒になっているので動作しません。これはどういう意味ですか? –

関連する問題