に各行を格納する、カンマでの入力、分割の複数の行を取る一緒に働くことになる入力の種類の例である:(標準入力から来る) ここで文字列配列
Archery,M,TEAM,Archery,Lord's Cricket Ground,1. GOLD,team ITA,Italy
Archery,M,TEAM,Archery,Lord's Cricket Ground,2. SILVER,team USA,United States
Archery,M,TEAM,Archery,Lord's Cricket Ground,3. BRONZE,team KOR,South Korea
Cycling,M,IND,Road,Regent's Park,1. GOLD,Aleksander Winokurow,Kazakhstan
Cycling,M,IND,Road,Regent's Park,2. SILVER,Rigoberto Uran,Colombia
Cycling,M,IND,Road,Regent's Park,3. BRONZE,Alexander Kristoff,Norway
Fencing,F,IND,Foil,ExCeL,1. GOLD,Elisa Di Francisca,Italy
InsertionEnd
タイトルが示唆するように、私はそれぞれの行をカンマで区切り、それらの文字列のそれぞれを配列(または文字列のベクトル)に格納したいと考えています。次に、配列の各項目を取得し、関数のパラメータとして使用したいと思います。私は複数の行を読み込む方法と文字列を分割する方法を知っていますが、これらのものを一緒に置くと実際に私のために働いていません。思考の
私のライン:
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
using namespace std;
int main()
{
string line;
stringstream ss(line);
while (line != "InsertionEnd") {
vector<string> array;
getline(ss, line, ',');
array.push_back(line);
addItem(array[0],array[1],array[2],array[3],array[4],array[5],array[6],array[7])
}
}
私は私の配列を取得した後、だから、僕はアスリートの構造体を作成し、私が作ったのaddItem機能を(8つのパラメータを取ります)を使用します。そうですね:
myTable.addItem("Archery","M","TEAM","Archery","Lord's Cricket Ground","1. GOLD","team ITA","Italy");
私は正しい道にありますか?またはこれは完全にベースオフですか?ありがとう。
注:私はaddItem関数をテストしており、パラメータを自分で入力するだけで動作します。ここで
まあ一つ一つのラインのための新しいベクトルがあるはずの:
は、次のコードは、あなたの問題への実用的なソリューションを実装しますか?だから、whileループの外側にあるベクトルを宣言すれば、ループが実行されて渡されるたびに新しいベクトルを作成するのではなく、ただ一つの巨大なベクトルを作成するのではないでしょうか? – djdangerousdick
あなたの 'line'変数の内容がどこから来たのかはっきりしていません...私の回答を更新します – qxz
私は私の答えを変更しました。 – qxz