Я новичок в 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
}
}
}
Прошу прощения за мой ржавый английский, но мне очень нужна ваша помощь.
Просто поместите всю строку в 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;
std::istringstream
. С его помощью вы можете использовать обычный оператор ввода>>
.