0

複数の方程式を解くプログラムに取り組んでいますが、それは関係ありません。私が問題を抱えているのは、方程式の解釈です。

data.txtたとえば、次のような内容のファイルがあります。

2x - 5y + 3z = 10
5x + y - 2z = 4

私はかなり長い間これを解釈しようとしてきましたが、C++ には str.split() のようなものがあると思っていたので成功しませんでした。私が念頭に置いていたのは、次の内容の配列でした:

2 -5 3 10
5 1 -2 4

どうすればこれを行うことができますか?

4

1 に答える 1

-1

ベクトル > データ

data.txt を 1 行ずつ読み取る: string 行

区切り文字を使用して行を分割する " \t+-=": ベクトル トークン

トークンを数値形式に変換: ベクトル v

v をデータにプッシュ: data.push_back(v)

アップデート:

vector<string> split(const string &s, const string &d)
{
    vector<string> t;
    string::size_type i = s.find_first_not_of(d);
    string::size_type j = s.find_first_of(d,i);
    while (string::npos != i || string::npos != j) {
        t.push_back(s.substr(i,j-i));
        i = s.find_first_not_of(d,j);
        j = s.find_first_of(d,i);
    }
    return t;
}

int main()
{
    vector<vector<double> > x;
    ifstream ifs("data.txt");
    string ls;
    while (getline(ifs,ls))
    {
        vector<string> ts = split(ls," \t+-=");
        vector<dobule> v;
        for (auto& s : ts)
            v.push_back( atof(s.c_str()) );
        x.push_back(v);
    }
    return 0;
}
于 2012-09-13T11:40:20.927 に答える