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

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

Войти
Регистрация
Восстановить пароль
 
 
Ieroglif
18 / 18 / 1
Регистрация: 23.06.2011
Сообщений: 237
#1

Изменение формата данных && работа с файлом - C++

18.04.2012, 18:38. Просмотров 686. Ответов 17
Метки нет (Все метки)

Вечер добрый, форумчане!

Вопрос следующий: каким образом данные, считанные из файла (они, я так понимаю, в текстовом формате) преобразовать в целочисленные/числа с плавающей точкой)?
Использую <fstream>.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.04.2012, 18:38     Изменение формата данных && работа с файлом
Посмотрите здесь:
Ошибка: multiple definition of `void std::swap<A>(A&amp;, A&amp;) C++
C++ Почему friend ostrem& operator <<(ostream& outs, const Rational&); - invalid function declaration?
В заштрихованную фигуру бросают точки с координатами x и y. Получить координаты первой точки не попавшей в эту область (фигура x*x+y*y<25&&x*x+y*y>=9& C++
C++ Порядок вычисления: операторы «|» и «||», «&» и «&&»
Friend ostream& operator<<(ostream& stream, CArr& obj); C++
Выделение памяти для буффера, под std::istream& operator>>(std::istream &, String &) C++
Как проверить, принадлежит ли символ заданному диапазону m...n, кроме if (c <= n && c >= m) ? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Модератор
Эксперт CЭксперт С++
7163 / 4329 / 632
Регистрация: 29.11.2010
Сообщений: 11,752
18.04.2012, 18:41     Изменение формата данных && работа с файлом #2
Все зависит от того, в какие переменные считываешь, можно просто считать в int/float и все будет корректно работать.
Ieroglif
18 / 18 / 1
Регистрация: 23.06.2011
Сообщений: 237
18.04.2012, 19:02  [ТС]     Изменение формата данных && работа с файлом #3
Да, ещё забыл один вопрос: вот я "прошёлся" по файлу, как мне вернуться обратно, к его началу, не открывая его заново?
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
18.04.2012, 19:26     Изменение формата данных && работа с файлом #4
seekp
Ieroglif
18 / 18 / 1
Регистрация: 23.06.2011
Сообщений: 237
18.04.2012, 19:58  [ТС]     Изменение формата данных && работа с файлом #5
Если возможно, поясните, пожалуйста, принцип действия: что, как да почему? Сложно воспринимать описание, предложенное по данной выше ссылке.
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
18.04.2012, 20:00     Изменение формата данных && работа с файлом #6
Цитата Сообщение от Ieroglif Посмотреть сообщение
Сложно воспринимать описание
Там и код есть.
Ieroglif
18 / 18 / 1
Регистрация: 23.06.2011
Сообщений: 237
18.04.2012, 20:06  [ТС]     Изменение формата данных && работа с файлом #7
Код есть, но он показывает пример работы с заданной строкой. Каким образом данную функцию применить к файлу с данными?
MrGluck
Модератор
Эксперт CЭксперт С++
7163 / 4329 / 632
Регистрация: 29.11.2010
Сообщений: 11,752
18.04.2012, 20:08     Изменение формата данных && работа с файлом #8
http://www.cplusplus.com/reference/i...ostream/seekp/
Ieroglif
18 / 18 / 1
Регистрация: 23.06.2011
Сообщений: 237
18.04.2012, 20:11  [ТС]     Изменение формата данных && работа с файлом #9
Скажем, имеется файл, который благополучно открыли. Каким образом дать завязку и в дальнейшем обращаться к ней?

C++
1
my_file.seekp(0,std::ios_base::beg);
?

Добавлено через 1 минуту
MrGluck, спасибо большое!
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
18.04.2012, 20:18     Изменение формата данных && работа с файлом #10
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
26
#include <fstream>
#include <iostream>
#include <iterator>
 
int main()
{
    std::ifstream fin("in.txt");
    std::ofstream fout("out.txt");
    std::copy
    (
        std::istream_iterator<char>(fin),
        std::istream_iterator<char>(),
        std::ostream_iterator<char>(fout)
    );
    fin.clear();
    fin.seekg(0);
    fout.seekp(1);
    std::copy
    (
        std::istream_iterator<char>(fin),
        std::istream_iterator<char>(),
        std::ostream_iterator<char>(fout)
    );
    fout << std::endl;
    return 0;
}
out
Bash
1
2
3
4
5
6
aasdsoon@desktop:~/Src/C++/main$ cat in.txt && make && ./main && cat out.txt 
asd
g++ -c -Wall -D_GLIBCXX_USE_NANOSLEEP -O3 --std=gnu++11 main.cpp -o main.o
g++ main.o -lm  -lboost_regex -lboost_filesystem -lboost_system -lboost_timer -lboost_date_time -lboost_thread -o main
aasd
soon@desktop:~/Src/C++/main$


Добавлено через 29 секунд
Цитата Сообщение от Ieroglif Посмотреть сообщение
Каким образом дать завязку и в дальнейшем обращаться к ней?
Поясните
Ieroglif
18 / 18 / 1
Регистрация: 23.06.2011
Сообщений: 237
18.04.2012, 20:25  [ТС]     Изменение формата данных && работа с файлом #11
После того, как установили "метку" где-либо в файле, надо ли будет указывать, чтобы считывание/запись из файла/в файл производилось именно с ней, если подобные операции будут автоматически проходить?
Я правильно понял, что если устанавливается вторая метка, первую она затирает?
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
18.04.2012, 20:29     Изменение формата данных && работа с файлом #12
Цитата Сообщение от Ieroglif Посмотреть сообщение
Я правильно понял, что если устанавливается вторая метка, первую она затирает?
Там в принципе только одна метка. Так что не затирает, а меняет. А так все правильно.
Цитата Сообщение от Ieroglif Посмотреть сообщение
После того, как установили "метку" где-либо в файле, надо ли будет указывать, чтобы считывание/запись из файла/в файл производилось именно с ней, если подобные операции будут автоматически проходить?
Нет, не надо.
Ieroglif
18 / 18 / 1
Регистрация: 23.06.2011
Сообщений: 237
18.04.2012, 20:52  [ТС]     Изменение формата данных && работа с файлом #13
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
26
27
28
int main()
{
    setlocale (LC_ALL,"RUS");
    string str;
    int n=0,str_k, var;
 
    ifstream my_file;
    my_file.open("1st.txt");
    if(!my_file) cout<<"\nОшибка открытия файла!"<<endl<<endl; else cout<<"\nФайл успешно открыт!"<<endl<<endl;
 
    while(!my_file.eof()){
        my_file>>str;
        my_file>>var;
        cout<<"str: "<<str<<endl;
        cout<<"var: "<<var<<endl;}
 
    cout<<"После seekg"<<endl;
 
    my_file.seekg(0);//установил точку
while(!my_file.eof()){
        my_file>>str;
        my_file>>var;
        cout<<"str: "<<str<<endl;
        cout<<"var: "<<var<<endl;}
    
    system("pause");
    return 0;
}
Насколько понимаю, установив
C++
1
my_file.seekg(0)
я задал "точку" на начало файла. Следовательно, у меня должно вывестись содержимое всего файла заново, выводятся же лишь последние две строки.


Содержимое 1st.txt:
Ivanov
65
m
7
Cidorova
32
w
12
Cyvorov
90
m
19
Boiko
68
m
2
Petrov
80
m
10
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
18.04.2012, 20:54     Изменение формата данных && работа с файлом #14
Ieroglif, еще раз мой код перечитайте.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.04.2012, 21:00     Изменение формата данных && работа с файлом
Еще ссылки по теме:
Нюансы синтаксиса: где, как и для чего используется && C++
В программе объявлена переменная int x=1; определить значение выражения х>0 && x<1 ? 10/x : 10*x C++
Почему в выражении нельзя использовать запятую вместо && C++
C++ Вызвать функцию базового класса с ссылочным квалификатором &&
C++ Напишите цикл, эквивалентный приведенному выше циклу, не пользуясь операторами && и ||

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

Или воспользуйтесь поиском по форуму:
Ieroglif
18 / 18 / 1
Регистрация: 23.06.2011
Сообщений: 237
18.04.2012, 21:00  [ТС]     Изменение формата данных && работа с файлом #15
Крутой код у Вас для меня слишком. Давайте, Вы просто "ткнёте" и объясните, что именно у меня не так и как это исправить?
Yandex
Объявления
18.04.2012, 21:00     Изменение формата данных && работа с файлом
Ответ Создать тему
Опции темы

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