C/C++

Как из строки взять число с++ ПОМАГИТЕ

у меня в файле test.txt записаны результаты вот так
1 Место = 95 балов
2 Место = 900 балов
3 Место = 80 балов
4 Место = 800 балов
5 Место = 700 балов
и т.д
как из этого файла взять именно числа 95,900,80,800,700 и записать их в вектор , чтобы в векторе были только эти числа и их можно было отсортировать.
Хм,просто взять и записать.
Вячеслав Ефимов
Вячеслав Ефимов
200
Лучший ответ
Азрет Дихан нет нужно именно что бы это происходило автоматически допустим в файле есть 100 месть и у каждого есть определенное количество баллов
Азрет Дихан типо 1 место =12 балов и так 100 раз и суть в том что бы достать все эти баллы и записать в вектор
 #include  
#include
#include
#include
#include
using namespace std;
map sort_by_key(const string& path) {
map box;
ifstream inp(path);
if (inp.is_open()) {
int key{}, value{};
string a, b, c;
while (inp >> key >> a >> b >> value >> c) {
box[key] = value;
}
}
return box;
}
map sort_by_value(const string& path) {
map box;
ifstream inp(path);
if (inp.is_open()) {
int key{}, value{};
string a, b, c;
while (inp >> key >> a >> b >> value >> c) {
box[value] = key;
}
}
return box;
}
int main() {
auto keys = sort_by_key("list.txt");
for (const auto& [key, value] : keys) {
cout
Вова Соколов
Вова Соколов
93 202
Азрет Дихан Большое спасибо что откликнулись но задача была решена ))
поток файла открываешь к примеру
ifstream input("test.txt");
int num;
while(1)
{
input.ignore(99999, '='); //пропускаем все до знака равенство
if(input >> num) array.push_back(num); //считываем после него число и записываем в вектор
else break; // иначе (если числа после '=' нетбыло или небыло символа '=') выходим из цикла
}
Азрет Дихан Сейчас попробую спасибо
Азрет Дихан спасибо все заработало 2 дня мучился
#include <iostream>
#include <fstream>
#include <vector>
#include <iterator>
#include <algorithm>
#include <string>
#include <stdio.h>
#include <array>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
vector <int> v;
int j,q;
ifstream input("test.txt");
int num;
while(1)
{
input.ignore(99999, '='); //пропускаем все до знака равенство
if(input >> num) v.push_back(num); //считываем после него число и записываем в вектор
else break; // иначе (если числа после '=' нетбыло или небыло символа '=') выходим из цикла
}
Азрет Дихан //Заполение вектора
cout << "\nКоличесество участников которых вы хотите добавить "; cin >> q;
for (int i = 0; i < q;i++) {
cout <<i+1<< " Участник балов = ";
cin >> j;
v.push_back(j);
}
//Вывод на экран
sort(v.begin(), v.end(), greater<int>());
for (int i = 0; i < v.size(); i++) {
cout<< i+1 << " Место = " << v[i] << " балов" << "\n";
}
Азрет Дихан //Если вектор будет больше 10 элементов он отсортирует его и запишет в файл только первые 10 элементов
auto begin = v.cbegin(); // указатель на первый элемент
auto end = v.cend(); // указатель на последний элемент
if (v.size() > 10) {
v.erase(begin + 10, end);
}
//запись в файл
ofstream file_object("Module2.txt");
for (int i = 0; i < v.size(); i++) {
file_object << i+1 << " Место = " << v[i]<< " балов"<<"\n";
}
return 0;
}
Азрет Дихан вот весь код можете посмотреть для это нужно чтобы был уже созданный файл под названием test.txt и там были уже какието результаты например
1 Место = 999 балов
2 Место = 900 балов
3 Место = 800 балов
4 Место = 800 балов
5 Место = 700 балов
и также должен быть пустой файл под названием Module.txt куда будет сохранен конечный результат
Азрет Дихан хорошо большое спасибо
Можно функцией форматированного ввода по строке прокрутить,
scanf("%d Место = %d балов", a, b);
Фарид Асхожаев
Фарид Асхожаев
27 426
Пишу с телефона, так что сори за ошибки.

Я дам тебе наметку.
Из потока stringstream можно выводить данные в числовые переменные. Я покажу как

#include <iostream>
#include <sstream>
using namespace std;

int main(){

//Создаем строку, где есть числа
string x_1="316";
//Создаем переменную типа stringstream и инициализируем ее сразу же строкой определенным образом как у меня
stringstream y_1(x_1);
//Создаем целочисленную переменную
int z;
//Из файлового потока y_1 переносим данные в z.
y_1>>z;
cout<<z;
return 0;
}
Максим ))))
Максим ))))
902
Азрет Дихан сейчас обдумаю все попытаюсь спосибо за совет )