Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.72
Dima_c8
4 / 4 / 0
Регистрация: 17.12.2011
Сообщений: 148
#1

Чтение из файла в переменную типа string - C++

28.03.2012, 23:01. Просмотров 2722. Ответов 14
Метки нет (Все метки)

Добрый вечер! Вот делаю программу в одном из элементов которой нужно прочесть из файла в переменную типа string имя продукта так вот я зделал так чтобы пользователь мог ввести новый продукт и его цену а в файл она записывалось таким образом:

[имя продукта]|цена продукта|;


программе нужно знать название всех продуктов файле как это зделать?Неделю с информатиком голову ламаю
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2012, 23:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Чтение из файла в переменную типа string (C++):

Сравнить переменную типа string с содержимым файла - C++
а как можно сравнить переменную типа string с содержимым файла?

Переменную типа string вывести в printf? - C++
как в переменную типа string вывести в printf? #include <stdio.h> // для принтф #include <stdlib.h> #include <string> using...

Как разбить переменную типа String на 2 части? - C++
есть переменная типа String, например String slovo= "кибер форум" как ее разбить на 2 чести ( до пробела и после) так, чтоб String...

Вставить один символ в переменную типа string - C++
Есть такая переменная string str = "Hllo world!"; Как мне вставить букву e, на первую позицию ? между H и l ?

Как записать шестнадцатеричное число в переменную типа string? - C++
Есть ф-ция, которая переводит целочисленный переменные или просто цифры в шестнадцатеричный вид. Например этот кусок кода выведет в консоль...

Как использовать переменную типа string в заголовочном файле? - C++
Есть файл cpp в котором объявлена переменная string head; Как мне использовать эту переменную в заголовочном файле?

14
panicwassano
592 / 560 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
29.03.2012, 00:01 #2
читаете через getline в строку, а потом самописной функцией парсите
0
Dima_c8
4 / 4 / 0
Регистрация: 17.12.2011
Сообщений: 148
29.03.2012, 00:06  [ТС] #3
Та вот что самое интересное цену считали все же а точно также изменив несколько переменных и несколько подвохов прочесть имя не получается я выставлю код когда возможность появится но эта возможность появится только в понедельник
0
Polikarpic
46 / 46 / 7
Регистрация: 29.06.2011
Сообщений: 174
29.03.2012, 00:08 #4
Если я правильно понял, то вам нужен либо связный список, либо массив структур. Тогда можно будет хранить названия и цены всех продуктов.
Неплохо было бы считать строкой, как указывает предыдущий пост
Ну а потом работать с этим массивом. Задачка вроде несложная
0
Dima_c8
4 / 4 / 0
Регистрация: 17.12.2011
Сообщений: 148
30.03.2012, 09:37  [ТС] #5
Кстати а почему я вот пытался зделать одномерный массив типа string но когда иницыализировал один элемент иницыализировались все элементы этим же значением?Да вот именно что задачка не сложная я даже зделал так чтоб функция считавала одну строку (самую первую или другую в файле)но как записать все строки из файла в массив не оч умею
0
Polikarpic
46 / 46 / 7
Регистрация: 29.06.2011
Сообщений: 174
30.03.2012, 11:18 #6
Если массив-инициализировать нужно в цикле
Ну а записывать строки в массив нужно, пока не наступит конец файла(используем константу EOF)
C++
1
2
3
4
while (!EOF) {
        fscanf(in, "%s", &arr[i].name_price);
            i++;
    }
так можно считать поле name_price i-го элемента массива структур из файла...
0
diagon
Higher
1930 / 1196 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
30.03.2012, 11:37 #7
Цитата Сообщение от Polikarpic Посмотреть сообщение
while (!EOF)
Всегда ложно.
2
panicwassano
592 / 560 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
30.03.2012, 11:51 #8
Цитата Сообщение от Polikarpic Посмотреть сообщение
используем константу EOF
вы наверное хотели сказать, что нужно делать проверку на конец файла != EOF
0
Dima_c8
4 / 4 / 0
Регистрация: 17.12.2011
Сообщений: 148
30.03.2012, 22:53  [ТС] #9
Я в принцэпе не понимаю как можно зделать массив типа стринг (много строк) и при этом обращатся к конкретной строке и к символу этой строки у меня ошыбку выдает
0
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
30.03.2012, 23:12 #10
Цитата Сообщение от Polikarpic Посмотреть сообщение
Ну а записывать строки в массив нужно, пока не наступит конец файла(используем константу EOF)
C++
1
2
3
4
while (!EOF) {
        fscanf(in, "%s", &arr[i].name_price);
            i++;
    }
C++
1
while (fscanf(in, "%s", &arr[i].name_price)!=EOF) i++;
Так точнее
1
Polikarpic
46 / 46 / 7
Регистрация: 29.06.2011
Сообщений: 174
31.03.2012, 00:07 #11
Точно. Спасибо, что поправили
0
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
31.03.2012, 00:13 #12
Цитата Сообщение от Dima_c8 Посмотреть сообщение
Я в принцэпе не понимаю как можно зделать массив типа стринг (много строк) и при этом обращатся к конкретной строке и к символу этой строки у меня ошыбку выдает
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <string>
#include <iostream>
using namespace std;
int main()
{
 string s[2]={"String 1","String 2"};
 cout<<s[0]<<"\t"<<s[1]<<endl;
 s[0][3]='A';
 cout<<s[0]<<"\t"<<s[1]<<endl;
 system("pause");
 return 0;
}
0
Dima_c8
4 / 4 / 0
Регистрация: 17.12.2011
Сообщений: 148
01.04.2012, 07:07  [ТС] #13
А понятно
0
Nameless One
Эксперт С++
5775 / 3425 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
01.04.2012, 09:24 #14
Если пишешь на С, то можно воспользоваться форматным вводом для разбора строк в файле:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <stdlib.h>
 
#define STR2(X) #X
#define STR(X) STR2(X)
 
#define PRODUCT_LEN 80
#define PRICE_LEN 40
 
int main(void)
{
    char product[PRODUCT_LEN + 1] = {0};
    char price[PRICE_LEN + 1] = {0};
    
    if(scanf("[%" STR(PRODUCT_LEN) "[^]]]|%" STR(PRICE_LEN) "[^|]|",
         product, price) == 2)
    printf("Product name: %s\nProduct price: %s\n", product, price);
    else
    fputs("No parse\n", stderr);
    exit(0);
}
1
Dima_c8
4 / 4 / 0
Регистрация: 17.12.2011
Сообщений: 148
01.04.2012, 15:02  [ТС] #15
Не я на с++
0
01.04.2012, 15:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2012, 15:02
Привет! Вот еще темы с ответами:

Объявить в заголовочном файле переменную типа std::string - C++
Почему я не могу в хедер файле объявит переменную стринг если писать std::string s=&quot;1111&quot;; &quot;лог ошибок будет писать что std...

Как записать длину строки типа string в переменную - C++
Собственно вопрос в заголовке. Спасибо заранее:) Через i=s.size() // где, s -&gt; string, i -&gt; int; не работает

Посимвольное чтение строки типа string - C++
Здравствуйте! Подскажите, пожалуйста. У меня есть строка типа string, нужно все цифры вывести на печать. Как сделать &quot;пробежку по...

В переменную типа string записывается только первое слово строки - C++
Как вписывать предложения в тип string (если возможно)? То есть скажем после string randomstr; cin &gt;&gt; randomstr; // вводим например...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru