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

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

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

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

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

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

На вскидку нужной функции не нашел (вернее запрос задал не корректно). Сразу прошу прощение за сам вопрос, аналог сишной функции... но проблема в том что в си нету string и врядле мне посоветуют сишные гении что то
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.04.2017, 15:30
Ответы с готовыми решениями:

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

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

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

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

22
1118 / 931 / 429
Регистрация: 25.12.2016
Сообщений: 3,030
23.04.2017, 15:39 2
C++
1
2
std::string s;
std::getline(file, s);
1
Рэмбо комнатный
100 / 100 / 99
Регистрация: 05.03.2017
Сообщений: 507
23.04.2017, 15:43 3
так присваивай стринговой переменной значение чара
0
130 / 156 / 87
Регистрация: 06.04.2016
Сообщений: 992
23.04.2017, 15:43 4
Можно еще ">>" попробовать вкупе с ftream, ifsteam или ofstream.
0
1 / 1 / 3
Регистрация: 15.08.2016
Сообщений: 97
23.04.2017, 15:51  [ТС] 5
likehood, так у нее же вроде буфер типа char, или нет?

Добавлено через 52 секунды
GeFacle, я выгружаю из файла инфу и загоняю ее в переменную типа string
0
1118 / 931 / 429
Регистрация: 25.12.2016
Сообщений: 3,030
23.04.2017, 15:52 6
Цитата Сообщение от Rec_cm Посмотреть сообщение
так у нее же вроде буфер типа char, или нет?
Типа std::string.
http://ru.cppreference.com/w/c... ng/getline
0
1 / 1 / 3
Регистрация: 15.08.2016
Сообщений: 97
23.04.2017, 17:17  [ТС] 7
likehood, выдает ошибку что то типа:
Нет экземпляра перегруженной функции getline cоответствует типу аргументов списка аргументов
0
1118 / 931 / 429
Регистрация: 25.12.2016
Сообщений: 3,030
23.04.2017, 17:21 8
Цитата Сообщение от Rec_cm Посмотреть сообщение
выдает ошибку
Для какого кода?
0
1 / 1 / 3
Регистрация: 15.08.2016
Сообщений: 97
23.04.2017, 17:23  [ТС] 9
likehood,
C++
1
top->secondName=getline(file,a);
даже если просто
C++
1
getline(file,a)
та же ошибка
0
1118 / 931 / 429
Регистрация: 25.12.2016
Сообщений: 3,030
23.04.2017, 17:28 10
Без типов непонятно в чём причина ошибки.
0
1 / 1 / 3
Регистрация: 15.08.2016
Сообщений: 97
23.04.2017, 17:30  [ТС] 11
likehood, простите.
C++
1
2
FILE *file;
string a;
0
1118 / 931 / 429
Регистрация: 25.12.2016
Сообщений: 3,030
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
1 / 1 / 3
Регистрация: 15.08.2016
Сообщений: 97
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
1118 / 931 / 429
Регистрация: 25.12.2016
Сообщений: 3,030
23.04.2017, 17:39 14
Цитата Сообщение от Rec_cm Посмотреть сообщение
так мне нужно на считывания из файла, а не в файл
ifstream это чтение (input) из файла

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

first name
second name
selary
....

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

Добавлено через 1 минуту
likehood, если хотите я могу вам показать код того чт у меня есть, правда input из файла у меня на си.. (мне все равно на чем писать, мне нужен результат)
0
1118 / 931 / 429
Регистрация: 25.12.2016
Сообщений: 3,030
23.04.2017, 17:49 18
Цитата Сообщение от Rec_cm Посмотреть сообщение
и это все мне нужно загрузить в соответсвующие поля структурной переменной
В чём проблема? Просто вызываем функцию getline нужное число раз.
0
1 / 1 / 3
Регистрация: 15.08.2016
Сообщений: 97
23.04.2017, 17:51  [ТС] 19
likehood, а, там указатель смещается сам... это хорошо. Такой, банаьный вопрос. как мне затереть старое значение строки? что бы новое записать
0
1118 / 931 / 429
Регистрация: 25.12.2016
Сообщений: 3,030
23.04.2017, 17:56 20
Цитата Сообщение от Rec_cm Посмотреть сообщение
как мне затереть старое значение строки? что бы новое записать
В смысле, изменить строку в файле?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.04.2017, 17:56

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

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

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

C++ DLL для работы с php файлами
Есть ли такой? Если есть, дайте пож-та!


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

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

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