-1

これらを休眠スタイルで含むテキストファイルがあるとします。

      name: natalie, sarah
      surname: parker
      age: 24
      contry: dubai

名前、名前、名前などを取得natalieしたいと思います。この後、コードのどこかに、変数name、surname、age(natalie、sarah、parker、24など)が必要です。sarahparker

まず、ファイルを読み取って配列に格納し、次に、これを解析するために: ""(スペース)または ":"である区切り文字を使用して解析する必要があります。<surname: parker>また、 "、"コンマを解析するための区切り文字<natalie, sarah>

毎回正確に1行必要なので、テキストを配列に格納するか、getline(textfile、size)を使用して行を取得できます。どれが一番適していると思いますか?そして、どのように解析を行うことができますか?

4

3 に答える 3

1

あなたは目標に非常に近いです。ちょっとした提案があります:

  • std :: mapを使用して、ファイルからデータを保存します
  • whileループを使用してファイルから各行を取得し、splitまたはboost :: splitを使用して文字列を分割し、:キーと値を取得してマップに保存します。
于 2013-01-27T11:39:17.097 に答える
1

正規表現を使用すると、より簡単に解決できます。このようなパターン: "name:([\w,]+)surname(\w+)"

于 2013-01-27T11:57:39.987 に答える
0

私はこのようなものを考えることができます(単純化された;エラーチェックや最適化などはありません;これはテストされていませんが、動作するはずです):

std::ifstream file(myfile);
std::string line;

std::map<const std::string, std::string> dataset;

while (file >> line) {
    size_t var_start = line.find_first_not_of(" \t"); // get beginning of the variable name
    size_t var_end = line.find_first_of(":"); // get the end of the variable name
    if (var_start == std::string::npos || var_end == std::string::npos) // any not found?
        continue; // skip this line
    std::string var_name = line.substr(var_start, var_end - var_start); // get the variable name
    std::string var_value = line.substr(var_end + 1); // get the variable content

    // now do something, e.g. safe it
    dataset[var_name] = var_value;
}
于 2013-01-27T11:38:43.587 に答える