区切り文字とカウントについて非常に確信がある場合は、次を使用できます
#include<iostream>
#include<fstream>
#include<vector>
#include<string>
using namespace std;
int main()
{
fstream fs;
fs.open("abc.txt",ios::in); //1
string str;
int counter = 0;
vector<string> vecString;
vector<double> vecDouble1;
vector<double> vecDouble2;
while(getline(fs, str)) //2
{
char *sArr = new char[str.length()+1]; //3
strcpy(sArr, str.c_str());
char *pch = strtok(sArr,","); //4
vecString.push_back(pch); //5
pch = strtok(NULL,",");
vecDouble1.push_back(atof(pch)); //6
pch = strtok(NULL,",");
vecDouble2.push_back(atof(pch));
delete[] sArr; //7
}
cin.ignore();
}
ベクトルよりも配列を使用することをお勧めします。
オンデマンドでの説明:
ストリーム経由で入力モードでテキスト ファイルを開きます
ファイルからテキストを 1 行ずつ取得します。
const
aを非 constにキャストするのは安全ではないため、この中間の char 配列が使用されます。
区切り文字に基づいて入力行をトークン化します(あなたの場合は単一のコンマ)。チュートリアルについては、これを参照してください。
最後に vector に要素を追加します。
atof()
に変換するために使用さstring
れdouble
ます。
中間文字ポインターを解放します。