Начните чтение со строки, содержащей определенную строку - PullRequest
1 голос
/ 19 февраля 2012

Я пытаюсь прочитать некоторые координаты XYZ из входного файла.У меня есть входной файл:

input.inp

POSITIONS
1.5    2.5    1.5    C
3.2    1.5    4.5    C
1.4    4.2    3.2    C

Я хочу написать функцию, которая ищет во входном файле строку, содержащую " C", а затем начинает читать координаты из этой строки.Как мне сделать это в C ++?(Я не хочу искать слово POSITIONS, так как эта часть входного файла может измениться позже).

Ответы [ 2 ]

2 голосов
/ 20 февраля 2012
ifstream file("in");
string line;
while (getline(file, line)) { 
    if (line.find(" C") == string::npos)
        continue;
    istringstream ss(line);
    double x, y, z;
    ss >> x >> y >> z;
    if (!ss)
        continue; // error
    // ok
}
0 голосов
/ 19 февраля 2012

Вы должны прочитать всю строку до переменной string.Проанализируйте его и, если вы хотите прочитать эти цифры, вы можете использовать stringstream (<sstream>)

string a = "";
in >> a;

// Проверить, есть ли в конце строка C или другие тесты, а затем

stringstream b(a, stringstream::in);

double c1=0, c2=0, c3=0;
b >> c1 >> c2 >> c3;

Будет читать числа из этой строки.

...