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

Функция get() разъясните ситуацию - C++

Восстановить пароль Регистрация
 
T-L-oleg
0 / 0 / 0
Регистрация: 26.01.2013
Сообщений: 5
06.03.2013, 21:16     Функция get() разъясните ситуацию #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<iostream>
#include<fstream>
 
using namespace std;
 
int main()
{
    setlocale(LC_CTYPE, "russian");
 
    char str[80];
 
    ifstream in("test", ios::in | ios::binary);
 
    in.get(str, 80);
    cout << str;
 
    in.close();
 
    return 0;
}
Текст файла "test"

C++
1
Всем привет!
В результате при выполнении программы, выводится: "Всем привет!", и тут же замещается текстом: "Для продолжения нажмите любую клавишу . . .", изменял символ разделения на: '!', и все прошло штатно.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
06.03.2013, 21:38     Функция get() разъясните ситуацию #2
T-L-oleg, вот так работает)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "stdafx.h"
#include<iostream>
#include<fstream>
using namespace std;
 
int main()
{
    setlocale(LC_CTYPE, "russian");
 
    char str[80];
 
    ifstream in("test.txt", ios::in | ios::binary);
 
    in.getline(str, sizeof(str), '\n');
    cout << str << "\n";
    in.close();
 
    return 0;
}
Добавлено через 3 минуты
T-L-oleg, ваш код так же будет работать если просто после вывод сделать так

C++
1
cout << str << endl;
или

C++
1
cout << str << "\n";
тут уже на вкус
T-L-oleg
0 / 0 / 0
Регистрация: 26.01.2013
Сообщений: 5
06.03.2013, 23:39  [ТС]     Функция get() разъясните ситуацию #3
Извиняюсь за то что ненаписал сразу, но я знаю как можно вывести нужную строку, проблема лишь в том, что я немогу понять почему происходит замещение, если можно, объясните наиболее объективно, я лишь новичек
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
07.03.2013, 00:26     Функция get() разъясните ситуацию #4
T-L-oleg,

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "stdafx.h"
#include<iostream>
#include<fstream>
using namespace std;
 
int main()
{
    setlocale(LC_CTYPE, "russian");
 
    char str[80];
 
    ifstream in("test.txt", ios::in);
 
    in.get(str, 80);
    cout << str;
 
    in.close();
    return 0;
}
думаю такой результат вас устроит

Добавлено через 29 минут
T-L-oleg, Вы открываете файл в бинарном режиме, так и пользуйтесь функциями для работы с бинарными файлами

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
#include "stdafx.h"
#include<iostream>
#include<fstream>
using namespace std;
 
int main()
{
    setlocale(LC_CTYPE, "russian");
 
    ifstream in("test.txt", ios::binary);
 
    in.seekg (0, in.end);
    int length = in.tellg();        //определяем длину содержимого файла
    in.seekg (0, in.beg);            //в начало файла
 
    char *str = new char[length];       //выделяем память
 
    in.read(str, length);               //считываем
    str[length] = '\0';
    cout << str;                        //выводим
    in.close();
 
    return 0;
}
Yandex
Объявления
07.03.2013, 00:26     Функция get() разъясните ситуацию
Ответ Создать тему
Опции темы

Текущее время: 00:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru