2016-11-08 4 views
-5

У меня есть файл, который состоит из точек данных и чисел, связанных с этими точками данных. Например, файл выглядит примерно так: «ИНТ NUM2»Чтение дополнительных данных в C++

(1,2) 45 
(3,4) 12 
(23,9) 6 90 
(3,5) 4 8 

Для каждой точки данных, я хочу, чтобы установить переменные «ИНТ Num1» и Как вы можете видеть, иногда мне приходится читать дополнительный номер, прикрепленный к моей точке данных. Когда дополнительного номера нет, я устанавливаю num1 и num2 на заданное значение. У меня нет проблем с получением x и y из координаты, но я не уверен, как проверить, чтобы я получил оба числа. Я чувствую, что мне нужно использовать getline(), но я не уверен, куда идти оттуда. Файл сохраняется как «ins».

char parentheses1, parentheses2, comma; 
int x, y, num1, num2; 
ins >> parentheses1 >> x >> comma >> y >> parentheses2; 
ins >> num1 >> num2; 
+0

после того, как вы получите то, что хотите, можете использовать 'getline', чтобы съесть остальную часть линии. – NathanOliver

+0

Почувствуйте, что вы хотите, чтобы мы напишем код. –

+1

Прочитайте каждую строку в std :: string с помощью getline и затем проанализируйте строку. –

ответ

1

Take Option 2 from this answer в качестве основы для вашего кода.

Чтение из stringstream в х и у

iss >> parentheses1 >> x >> comma >> y >> parentheses2; 

, а затем собрать цифры, пока не не осталось на линии

std::vector<int> numbers; // dynamic array of numbers 
int temp; 
while (iss >> temp) // exits as soon as you can't read an int from the stream 
{ 
    numbers.push_back(temp); // store in vector 
} 

Вы можете упростить выше немного, если есть не больше, чем, скажем, 2 числа.

Смежные вопросы