Как прочитать конкретный первый символ и сохранить данные на C ++

0

Я новичок в C++.

Я хочу написать программу, которая может читать файл такой ниже:

p   6   9
n   3
b   1   6.0
b   1   4.0
b   2   2.0

В таком файле я хочу прочитать строку с первым символом b.
Я пытаюсь использовать getline() и судить, является ли первый символ b.
Однако я столкнулся с проблемой: я могу сэкономить первый int, но второй двойной номер я не могу его сохранить. Я знаю, причина в том, что я сохраняю его в char, поэтому число добула разделено (such like 6.0 become '6' '.' '0').
Таким образом, имеет ли другой способ сохранить строку с целым и двойным?

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main(){

    char b[100];
    string word;
    int a,d;
    double c;
    ifstream infile("test.txt");
    while(infile){
        infile.getline(b,100);
        if(b[0] == 'b'){
            //where I don't know how to save the data
        }
    }
}

Прошу прощения за мой ржавый английский, но мне очень нужна ваша помощь.

  • 0
    Возможно, вы захотите прочитать о std::istringstream . С его помощью вы можете использовать обычный оператор ввода >> .
Теги:

1 ответ

2
Лучший ответ

Просто поместите всю строку в std::istringstream и используйте >> чтобы получить свои данные:

int int_value;      // second data will be saved here, e.g. 1
float float_value;  // third data will be saved here, e.g. 6.0

char char_dummy;    // dummy char to hold the first char, e.g. 'b'
istringstream iss(b);
iss >> char_dummy >> int_value >> float_value;
  • 1
    Поскольку вы контролируете формат данных, такие решения, как istringstream, станут вашим другом. Он очень чистый и менее подвержен ошибкам, чем старые решения в стиле C, такие как fscanf и т. Д.
  • 0
    Спасибо большое !!! Я попытаюсь!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню