Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Rec_cm
1 / 1 / 3
Регистрация: 15.08.2016
Сообщений: 97
Завершенные тесты: 1
#1

Функции для работы с файлами

23.04.2017, 15:30. Просмотров 352. Ответов 22
Метки нет (Все метки)

Есть на си такая прекрасная функция как fgets(). Мне нужен аналог но со string вместо char.

Суть проблемы. Мне нужно из файла копировать построчно данные (1 строка- фамилия, 2я- имя и т д). Как мне организовать это само копирование ?

Считанные данные мне нужно записать в очередь со структурными переменными.

На вскидку нужной функции не нашел (вернее запрос задал не корректно). Сразу прошу прощение за сам вопрос, аналог сишной функции... но проблема в том что в си нету string и врядле мне посоветуют сишные гении что то
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2017, 15:30
Ответы с готовыми решениями:

Функции для работы с текстовыми файлами
Файл содержит целые числа. Вычислить сумму значений из файла, в ...

Укажите функции ввода-вывода для работы с бинарными файлами
Укажите функции ввода-вывода для работы с бинарными файлами

Низкоуровневые функции работы с файлами
Добрый день. Подскажите, пожалуйста, какие есть низкоуровневые функции работы с...

Функции работы с файлами через поток не работают! Подскажите ошибку?
int Write(House **massiv2, int *size2, int *size) { int i=0; ifstream...

Используя высокоуровневые функции работы с файлами, прочитать строку из файла
Здравствуйте! Очень нужна помощь... В этом задании нужно с помощью свой лично...

22
likehood
950 / 803 / 385
Регистрация: 25.12.2016
Сообщений: 2,658
Завершенные тесты: 3
23.04.2017, 15:39 #2
C++
1
2
std::string s;
std::getline(file, s);
1
GeFacle
Рэмбо комнатный
95 / 95 / 99
Регистрация: 05.03.2017
Сообщений: 505
Завершенные тесты: 4
23.04.2017, 15:43 #3
так присваивай стринговой переменной значение чара
0
DemolitionMan
129 / 155 / 87
Регистрация: 06.04.2016
Сообщений: 992
23.04.2017, 15:43 #4
Можно еще ">>" попробовать вкупе с ftream, ifsteam или ofstream.
0
Rec_cm
1 / 1 / 3
Регистрация: 15.08.2016
Сообщений: 97
Завершенные тесты: 1
23.04.2017, 15:51  [ТС] #5
likehood, так у нее же вроде буфер типа char, или нет?

Добавлено через 52 секунды
GeFacle, я выгружаю из файла инфу и загоняю ее в переменную типа string
0
likehood
950 / 803 / 385
Регистрация: 25.12.2016
Сообщений: 2,658
Завершенные тесты: 3
23.04.2017, 15:52 #6
Цитата Сообщение от Rec_cm Посмотреть сообщение
так у нее же вроде буфер типа char, или нет?
Типа std::string.
http://ru.cppreference.com/w/cpp/string/basic_string/getline
0
Rec_cm
1 / 1 / 3
Регистрация: 15.08.2016
Сообщений: 97
Завершенные тесты: 1
23.04.2017, 17:17  [ТС] #7
likehood, выдает ошибку что то типа:
Нет экземпляра перегруженной функции getline cоответствует типу аргументов списка аргументов
0
likehood
950 / 803 / 385
Регистрация: 25.12.2016
Сообщений: 2,658
Завершенные тесты: 3
23.04.2017, 17:21 #8
Цитата Сообщение от Rec_cm Посмотреть сообщение
выдает ошибку
Для какого кода?
0
Rec_cm
1 / 1 / 3
Регистрация: 15.08.2016
Сообщений: 97
Завершенные тесты: 1
23.04.2017, 17:23  [ТС] #9
likehood,
C++
1
top->secondName=getline(file,a);
даже если просто
C++
1
getline(file,a)
та же ошибка
0
likehood
950 / 803 / 385
Регистрация: 25.12.2016
Сообщений: 2,658
Завершенные тесты: 3
23.04.2017, 17:28 #10
Без типов непонятно в чём причина ошибки.
0
Rec_cm
1 / 1 / 3
Регистрация: 15.08.2016
Сообщений: 97
Завершенные тесты: 1
23.04.2017, 17:30  [ТС] #11
likehood, простите.
C++
1
2
FILE *file;
string a;
0
likehood
950 / 803 / 385
Регистрация: 25.12.2016
Сообщений: 2,658
Завершенные тесты: 3
23.04.2017, 17:34 #12
Цитата Сообщение от Rec_cm Посмотреть сообщение
FILE *file;
Это сишные файлы, они плюсовые строки не понимаю. Надо использовать std::fstream.

Добавлено через 2 минуты
C++
1
2
3
std::string s;
std::ifstream file(fileName);
std::getline(file, s);
1
Rec_cm
1 / 1 / 3
Регистрация: 15.08.2016
Сообщений: 97
Завершенные тесты: 1
23.04.2017, 17:38  [ТС] #13
likehood, так мне нужно на считывания из файла, а не в файл

Добавлено через 1 минуту
likehood,

вот такой код, тоже выдает ошибку:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
struct MyStruct
{
    
    string b;
 
}b, *po;
 
 
int main() {
    
    string buff;
    ifstream file;
    file.open("1.txt");
 
    po->b=getline(file,buff); // вот тут ошибку: Severity   Code    Description Project File    Line    Suppression State
Error   C2679   binary '=': no operator found which takes a right-hand operand of type 'std::basic_istream<char,std::char_traits<char>>' (or there is no acceptable conversion) ConsoleApplication7 c:\users\roman\documents\visual studio 2015\projects\consoleapplication7\consoleapplication7\consoleapplication7.cpp    26  
 
 
 
 
    cout << endl;
    system("pause");
    return 0;
 
}
0
likehood
950 / 803 / 385
Регистрация: 25.12.2016
Сообщений: 2,658
Завершенные тесты: 3
23.04.2017, 17:39 #14
Цитата Сообщение от Rec_cm Посмотреть сообщение
так мне нужно на считывания из файла, а не в файл
ifstream это чтение (input) из файла

Добавлено через 1 минуту
Цитата Сообщение от Rec_cm Посмотреть сообщение
po->b=getline(file,buff);
Присваивать не надо, вызывать просто как getline(file,buff);
1
Rec_cm
1 / 1 / 3
Регистрация: 15.08.2016
Сообщений: 97
Завершенные тесты: 1
23.04.2017, 17:40  [ТС] #15
likehood, и оно скопирует первую строку. А дальше?
0
likehood
950 / 803 / 385
Регистрация: 25.12.2016
Сообщений: 2,658
Завершенные тесты: 3
23.04.2017, 17:41 #16
Цитата Сообщение от Rec_cm Посмотреть сообщение
и оно скопирует первую строку.
Прочитает из файла и запишет в строку buff.
Цитата Сообщение от Rec_cm Посмотреть сообщение
А дальше?
А что дальше?
0
Rec_cm
1 / 1 / 3
Регистрация: 15.08.2016
Сообщений: 97
Завершенные тесты: 1
23.04.2017, 17:44  [ТС] #17
likehood, проблема в том что в файле у меня находиться приблизительно вот что

first name
second name
selary
....

и это все мне нужно загрузить в соответсвующие поля структурной переменной

Добавлено через 1 минуту
likehood, если хотите я могу вам показать код того чт у меня есть, правда input из файла у меня на си.. (мне все равно на чем писать, мне нужен результат)
0
likehood
950 / 803 / 385
Регистрация: 25.12.2016
Сообщений: 2,658
Завершенные тесты: 3
23.04.2017, 17:49 #18
Цитата Сообщение от Rec_cm Посмотреть сообщение
и это все мне нужно загрузить в соответсвующие поля структурной переменной
В чём проблема? Просто вызываем функцию getline нужное число раз.
0
Rec_cm
1 / 1 / 3
Регистрация: 15.08.2016
Сообщений: 97
Завершенные тесты: 1
23.04.2017, 17:51  [ТС] #19
likehood, а, там указатель смещается сам... это хорошо. Такой, банаьный вопрос. как мне затереть старое значение строки? что бы новое записать
0
likehood
950 / 803 / 385
Регистрация: 25.12.2016
Сообщений: 2,658
Завершенные тесты: 3
23.04.2017, 17:56 #20
Цитата Сообщение от Rec_cm Посмотреть сообщение
как мне затереть старое значение строки? что бы новое записать
В смысле, изменить строку в файле?
0
23.04.2017, 17:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.04.2017, 17:56

Класс для работы с файлами
День добрый. Столкнулся со следующей проблемой. Задание: создать класс,...

Библиотека для работы с файлами
Нужен какой-нибудь набор готовых методов для работы с файлами: копирование,...

Не работает программа для работы с файлами
Написал простую программу для записи строки в файл и чтения из файла. При...


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

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

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