Arhn - архитектура программирования

Чтение первых X символов строки в строку

У меня есть файл, который отформатирован следующим образом:

Word1          num1 num2
Word2 Word3    num3 num4

между Word1 и num1 есть 15 пробелов, которые используются такими словами, как Word1, Word2 и Word3.

Я хочу прочитать первые 15 символов и поместить их в строку, а затем прочитать числа:

string[0] = "Word1          ";
number[0] = num1;
number[1] = num2;
string[1] = "Word2 Word3    ";
number[2] = num3;
number[3] = num4;
...

Функция, которую я сейчас использую для чтения данных из файла:

void read_data(){

ifstream datafile("U2.txt");

datafile>> product_count >> product2_count;

for (int i = 1; i <= product_count; i++) {
    datafile>> product_cost[i];
}

for (int i = 1; i <= product2_count; i++) {
    datafile>> products[i].product2_name;
    for (int j = 1; j <= product_count; j++) {
        datafile>> products[i].product_ammount[j];
    }
}

datafile.close();

}

и сам файл данных:

6 5
12 25 35 2 3 9
Salotos        5 1 0 0 2 1
Kepsnys        6 3 12 9 0 0
Gaiva          0 0 1 15 1 0
Ledai Miau     0 0 5 5 5 1
Tortas         1 2 1 1 1 1
14.05.2012

  • И что вы пробовали до сих пор? 14.05.2012
  • до сих пор я просто читаю слово за раз, но это не сработает для меня, потому что если есть строка, состоящая из 2 или более слов, она читает 1-е слово в строку, а затем остальные в следующий целые, а не та же строка, поэтому там, где должны были быть целые, они возвращают 0. В основном, как inFile ›› string ›› number ›› number 14.05.2012
  • Если на самом деле вы покажете нам код, который будет лучше :) 14.05.2012
  • Не могли бы вы перевести идентификаторы на английский, пожалуйста? 14.05.2012
  • pr_kaina не определено, а также как файлы отформатированы? С пробелами, вкладками...? 14.05.2012

Ответы:


1

Я не буду писать код за вас, но основная идея состоит в том, чтобы

  • прочитать строку с getline() до std::string
  • возьмите первые 15 символов, обрежьте их, чтобы убрать пробел
  • создайте std::stringstream с остальной частью строки и выполните sstream >> num1[i] >> num2[i] (где numX — массивы int, а i — индекс строки.
14.05.2012

2

Ваша проблема с линией

datafile >> products[i].product2_name;

который читается только до первого пробела. Вам нужно прочитать его, как предлагает CharlesB, извлекая первые 15 символов, используя string::substr, а затем обрезая. см. здесь

Я сильно подозреваю, что ваши циклы for должны начинаться с 0, а не с 1.

14.05.2012
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..