0

クラスに情報を出力するファイルがあります。具体的には、出力しようとしている文字列の 1 つがベクトルになります。問題は、フォーマットされる文字列(この場合は興味)を取得しようとしていることです:

interest_string = "food, exercise, stuff"

したがって、基本的には、上記の文字列を配列の文字列に変換するか、上記の文字列をカンマ区切りで区切られた個々の文字列のベクトルにコピーしたいと考えています。

void Client::readClients() {
    string line;


    while (getline( this->clients, line ))
    {

        string interest_num_string, interest_string;

        istringstream clients( line );
        getline( clients, this->sex, ' ' );
        getline( clients, this->name, ',' );
        getline( clients, this->phone, ' ' );
        getline( clients, interest_num_string, ' ' );
        getline( clients, interest_string, '.' );

        this->interests = atoi(interest_num_string.c_str());

        cout << this->sex << "\n" << this->name << "\n" << this->phone << "\n" << interest_num_string << "\n" << interest_string;
    }

    this->clients.close();
}
4

3 に答える 3

2

getlineヒント: isの代替署名

istream& getline ( istream& is, string& str, char delim );

strtokin C も実行可能なオプションであり、低レベルの文字列操作ではそれほど残忍ではありません。

于 2012-06-11T01:25:30.187 に答える
0

ベクターまたは他の適切なコンテナーを使用できます。読み込んでコンテナに配置するすべてのデータを含む「person」クラスを作成する必要があります。

void Client::readClients(std::vector<MyClass*>& myPeople)
{
    //  ... other parts of your code

    // Create a person
    pointerToPerson = new Person();

    // read them in
    getline(clients, pointerToPerson->field, ' ');

    // After you load a person just add them to the vector
    myPeople.push_back(pointerToPerson);

    // more of your code ...
}
于 2012-06-11T01:51:33.140 に答える
0

シンプルな C++ コード:

  string s = "abc,def,ghi";
  stringstream ss(s);
  string a,b,c;
  ss >> a ; ss.ignore() ; ss >> b ; ss.ignore() ; ss >> c;    
  cout << a << " " << b << " " << c << endl;

出力:

abcデフギ

于 2013-05-27T14:25:53.837 に答える