Как разобрать часть файла в C ++ на Linux - PullRequest
0 голосов
/ 26 декабря 2011

У меня есть файл с именем file.txt, и он имеет такую ​​структуру:

owner_name    : first_last_name
filesize      : 1000
is_legal_file : yes
date          : someDate

.
.
.

Я хочу получить значение в fileSize. (1000 в этом примере.)

Как мне получить эту информацию?

Ответы [ 3 ]

1 голос
/ 26 декабря 2011

Читайте файл построчно до второй строки, затем strtok () вторую строку :, и у вас будет две строки: filesize и 1000, тогда вы можете используйте atoi () .

0 голосов
/ 26 декабря 2011

Разбить (разделить) строку, используя sstream

#include <iostream>
#include <sstream>
#include <string>

int main() {
  using namespace std;
  for (string line; getline(cin, line); ) {
     istringstream ss(line);
     string name;
     ss >> name; // assume spaces between all elements in the line
     if (name == "filesize") {
        string sep;
        int filesize = -1;
        ss >> sep >> filesize;
        if (sep == ":" && ss) {
          cout << filesize << endl;
          break;
        }
     }
  }
}

выход

1000

Похожие: Разделить строку в C ++?

0 голосов
/ 26 декабря 2011

Другой простой способ кроме strtok - сделать while (infile >> myString).Просто выясните номер нужного вам значения и выведите его.

std::string myString;
ifstream infile("yourFile.txt");
while (infile >> myString)
{
    //Do an if-statement to only select the value you want.
    //Leaving this for you since I think it's homework
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...