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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
snyppimylt
7 / 7 / 1
Регистрация: 18.12.2011
Сообщений: 400
#1

Проблемы с программой ввода вывода и записи файла - C++

15.01.2013, 05:59. Просмотров 1169. Ответов 20
Метки нет (Все метки)

Для примеров и практики я пишу различные программы. Одна из них это программа для ввода данных и запись их в .txt. Введя такую вот локализацию:

C++
1
2
3
#include <locale>
....
setlocale(LC_ALL, "RUS");
Консоль в состоянии выводить русский язык а вот при записи в файл он записывает каракули.

Как записываем данные:

C++
1
2
3
4
5
6
7
8
ofstream file(Name);
 
file<<"Имя: "<<Mynam<<'\n'
    <<"Фамилия: "<<Fam<<'\n'
    <<"Возраст: "<<age<<'\n'
    <<"Интересы: "<<Inte<<'\n'
    <<"Работа: "<<Rabot<<'\n'
    <<"О себе: "<<Pro;
Это первая проблема, вторая проблема заключается при вводе данных. Дело в том. что используя cin , он не совсем засчитывает пробел, и вот например если я ввожу данные с пробелом то он пропускает одно или две строчки ввода данных:
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
    
cout<<"\nВведите имя файла:";
    cin>>Name;
strcat(Name,".txt");
 
cout<<"\nВведите свое имя:";
cin>>Mynam;
 
cout<<"\nВведите свою фамилию:";
cin>>Fam;
 
cout<<"\nВаш возраст:";
cin>>age;
 
if(age==0)
cout<<"n\Примечание: при вводе символа по умолчанию 0\n";
 
cout<<"\nКакие у вас интересы:";
cin>>Inte;
 
cout<<"\nКем работаете или учитесь (класс / nна кого) :";
cin>>Rabot;
 
 
cout<<"\nРасскажите про себя в кратце :";
cin>>Pro;
Результат работы программы:
0
Миниатюры
Проблемы с программой ввода вывода и записи файла  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.01.2013, 05:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проблемы с программой ввода вывода и записи файла (C++):

Разработка приложений с использованием файла ввода-вывода - C++
В файле data.txt построчно записан некоторый текст. Найти строку максимальной длины и ее позицию.

Ошибка при работе с потоками ввода (вывода) в файл (из файла) - C++
Изучаю перегрузку операторов ввода/вывода с файлом и без. Вылетает такая ошибка при отработанном коде: Необработанное исключение по...

Как создать проект для ввода и вывода данных из одного файла? - C++
Доброго всем дня! Учу сейчас ввод/вывод данных. Подскажите , пожалуйста, чтобы осуществить ввод в файл/вывод данных с этого же файла, ...

Проблемы с программой - C++
Недавно попросил знакомого помочь с программой, он написал, скинул но комментариев не оставил... курсовую нужно сдать завтра... Извините за...

Проблемы с программой - C++
Сегодня начал изучать С++ по книжке Джесс Либерти &quot;C++ за 21 день&quot; и при написании первой же программы при компиляции программа мне выдаёт...

Проблемы с программой перевода из восьмеричной системы счисления в десятичную - C++
Не получается написать программу. для перевода из восьмеричной системы счисления в десятичную. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; ...

20
snyppimylt
7 / 7 / 1
Регистрация: 18.12.2011
Сообщений: 400
28.01.2013, 21:09  [ТС] #16
Цитата Сообщение от UserAK Посмотреть сообщение
попробуйте установить кодовые страницы
C++
1
2
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
эти функции в Windows.h
пробовал, он мне вообще каракули показывал вместо русского языка, ну и записывал так же.

Пробовал CharToOem. , вообще символы какие то выводит но не все и не те которые нужны.

Добавлено через 2 часа 19 минут
А, вот текст записывает русским в файл а выводит в каракулях.
0
SatanaXIII
Супер-модератор
Эксперт С++
5618 / 2653 / 246
Регистрация: 01.11.2011
Сообщений: 6,549
Завершенные тесты: 1
29.01.2013, 09:16 #17
Если не лень поковыряться
1
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
29.01.2013, 10:23 #18
CharToOemA
OemToCharA
в помощь
ну и cin.getline
0
snyppimylt
7 / 7 / 1
Регистрация: 18.12.2011
Сообщений: 400
14.02.2013, 15:45  [ТС] #19
Цитата Сообщение от SatanaXIII Посмотреть сообщение
О, благодарю
0
booker
23 / 23 / 2
Регистрация: 21.11.2012
Сообщений: 106
14.02.2013, 16:53 #20
для корректного отображения кирилицы
если в винде, то подключаете
C
1
2
#include <windows.h>
#pragma comment(lib,"user32.lib")
и после использования cin>> конвертируйте данные этой функцией

C
1
2
3
4
5
6
std::string toANSI(std::string lstring)// к ANSI
{    
   char buf[100];   
   OemToCharA(lstring.c_str(), buf);
  return buf;
};
Добавлено через 51 минуту
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
#include <iostream>
#include <windows.h>
#include<fstream>
 
#pragma comment(lib,"user32.lib")
 
using namespace std;
 
std::string toANSI(std::string lstring)// к ANSI
{    
   char buf[20];   
   OemToCharA(lstring.c_str(), buf);
  return buf;
};
 
    int main(){
        setlocale(LC_CTYPE,"russian");
        string rusword;
        cin>>rusword;
        ofstream out ("c:\\outfile.txt");
        out<<rusword<<endl;//до конвертации
        rusword=toANSI(rusword);
        out<<rusword;//после
        out.close();
            
        return 0;
}
1
snyppimylt
7 / 7 / 1
Регистрация: 18.12.2011
Сообщений: 400
19.02.2013, 00:15  [ТС] #21
Цитата Сообщение от booker Посмотреть сообщение
для корректного отображения кирилицы
если в винде, то подключаете
C
1
2
#include <windows.h>
#pragma comment(lib,"user32.lib")
и после использования cin>> конвертируйте данные этой функцией

C
1
2
3
4
5
6
std::string toANSI(std::string lstring)// к ANSI
{    
   char buf[100];   
   OemToCharA(lstring.c_str(), buf);
  return buf;
};
Добавлено через 51 минуту
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
#include <iostream>
#include <windows.h>
#include<fstream>
 
#pragma comment(lib,"user32.lib")
 
using namespace std;
 
std::string toANSI(std::string lstring)// к ANSI
{    
   char buf[20];   
   OemToCharA(lstring.c_str(), buf);
  return buf;
};
 
    int main(){
        setlocale(LC_CTYPE,"russian");
        string rusword;
        cin>>rusword;
        ofstream out ("c:\\outfile.txt");
        out<<rusword<<endl;//до конвертации
        rusword=toANSI(rusword);
        out<<rusword;//после
        out.close();
            
        return 0;
}
Блин, а если не трудно, объясните что тут происходит.
0
19.02.2013, 00:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.02.2013, 00:15
Привет! Вот еще темы с ответами:

Проблемы с программой (вывод лишних символов из данных вне массива) - C++
Прошу скорее помочь с программой. Выводит лишние неведомые символы. Почему это происходит мне известно, однако где и как с этим бороться -...

Поток ввода-вывода - C++
#include &lt;iostream&gt; using namespace std; int main() { int i; while(true) { if(cin&gt;&gt;i)

Переопределение ввода / вывода - C++
Структура «абонент телефонной сети» содержит следующие поля: 1) фамилия (строка), 2) ули-ца, 3) дом, 4) квартира, 5) тел. номер....

Манипуляторы ввода/вывода - C++
Помогите пожалуйста с решением Выполнить задание соответствующего варианта, с использованием контейнерных классов и алгоритмов...


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

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

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