198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
||||||
1 | ||||||
getline, string, запись в файл, русский язык12.08.2013, 15:27. Показов 17572. Ответов 20
Метки нет (Все метки)
Кликните здесь для просмотра всего текста
Подскажите, программа компилируется, запускается, ввожу сумму, потом когда предлагает ввести имя, программа сам ввод пропускает, т.е. выводит на экран "Введите имя: " а сразу после этого "Для продолжения нажмите любую клавишу" (за счет system("pause")) в чем косяк? И еще несколько вопрос, в чем разница между get() и getline() ? этот вопрос мне по ночам спать не дает И еще, подскажите, как мне записать в файл string на русском языке?
0
|
12.08.2013, 15:27 | |
Ответы с готовыми решениями:
20
Xcode , С++ и русский язык: как вывести в файл русский текст без сбитой кодировки? String и русский язык Русский язык и тип string Как в string использовать русский язык? |
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
|
12.08.2013, 15:39 [ТС] | 3 |
Я не совсем понял (и явно не я в этом виноват), т.е. из-за строчки 25 ( cin >> sum ) у меня строчка 27 ( std::getline(cin, name) ) не работает?
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
12.08.2013, 15:40 | 4 |
istream& get (char* s, streamsize n);
Если символ вообще не извлекается (например, сразу конец файла), то в строку ввода помещается '\0' и устанавливается failbit (и eofbit). Если вводится больше, чем n - 1, то в конец строки ввода помещается '\0', флаг ошибки НЕ устанавливается (в отличие от getline(char* s, streamsize n)). Не введённое (вмесе с '\n') остаётся в очереди. Если конец файла, то устанавливает eofbit. ВАЖНО!!! ПОТОК С УСТАНОВЛЕННЫМ eofbit, ОБРАБАТЫВАЕТСЯ УСЛОВНЫМИ ОПЕРАТОРАМИ КАК true. ЕСЛИ ЖЕ В ПОТОКЕ УСТАНОВЛЕН failbit ИЛИ badbit, ТО КАК false. Если пустая строка (т.е., '\n' - первый), то чтение останавливается и устанавливается failbit(в отличие от getline(char* s, streamsize )), символ '\n' остаётся в очереди (в отличие от getline(char* s, streamsize n)), в строку ввода помещается '\0'; Если символ перевода строки('\n', но не первый), то чтение останавливается, в конец строки помещается '\0', символ '\n' остаётся в очереди (в отличие от getline(char* s, streamsize n)), поэтому если дальше будет get (char* s, streamsize n), то установится failbit. istream& getline(char* s, streamsize n); Если символ вообще не извлекается (например, сразу конец файла), то в строку ввода помещается '\0' и устанавливается failbit (и eofbit). Если вводится больше, чем n - 1, то в конец строки ввода помещается '\0' и устанавливает failbit. Не введённое остаётся в очереди. Если конец файла, то устанавливается eofbit. ВАЖНО!!! ПОТОК С УСТАНОВЛЕННЫМ eofbit, ОБРАБАТЫВАЕТСЯ УСЛОВНЫМИ ОПЕРАТОРАМИ КАК true. ЕСЛИ ЖЕ В ПОТОКЕ УСТАНОВЛЕН failbit ИЛИ badbit, ТО КАК false. Если пустая строка (т.е., '\n' - первый), то чтение останавливается, символ '\n' извлекается из очереди (в отличие от get (char* s, streamsize n)), но не сохраняется, в строку ввода помещается '\0' . Флаг ошибки НЕ устанавливается (в отличие от get (char* s, streamsize n)). Не введённое остаётся в очереди. Если символ перевода строки('\n', но не первый), то чтение останавливается, в конец строки помещается '\0', символ '\n' извлекается из очереди (в отличие от get (char* s, streamsize n)), но не сохраняется. Добавлено через 31 секунду Да.
1
|
70 / 70 / 13
Регистрация: 13.05.2012
Сообщений: 130
|
||||||
12.08.2013, 15:42 | 5 | |||||
Если перед cin.getline() был любой cin, то перед ним нужно поставить cin. ignore().
1
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
|
12.08.2013, 15:46 [ТС] | 6 |
А по поводу русского языка?
0
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
|
12.08.2013, 15:47 [ТС] | 8 |
0
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
||||||
12.08.2013, 16:00 [ТС] | 10 | |||||
Самый короткий (и простой) путь для записи в файл русскими буквами это:
более простых нет? Добавлено через 1 минуту И еще как я заметил, приходится при создании каждой программы (консольной) приходится в ручную устанавливать шрифт: Lucida Console, можно этот как то по другому сделать, например прописать в код программы параметр, что бы он автоматически устанавливал шрифт: Lucida Console
1
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
|
12.08.2013, 16:10 [ТС] | 12 |
Windows 7
честно сказать я сейчас впервые переключил шрифт на указанный, до этого с подобным не сталкивался, не было потребности. Я создаю проект в MS VS и у меня по умолчанию создается с такими настройками: как переделать?
0
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
|
12.08.2013, 16:10 [ТС] | 13 |
0
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
||||||
12.08.2013, 16:22 [ТС] | 15 | |||||
Дело было как, я установил Microsoft Visual Studio 2012, потом создал консольный проект, в нем был всего один файл, source.cpp и я в него записал следующий код для удобства : Кликните здесь для просмотра всего текста
конечно многих знающих программистов улыбнёт этот код, но что поделать, надо с чего то начинать. Потом я то, что получилось, сохранил как шаблон (Файл –> Экспорт шаблонов). И теперь при создании новой программы, выбираю этот шаблон и в нем уже делаю программу. Но каждая сделанная в нем программа имеет настройки шрифта такие, как показаны на скриншоте выше (и вообще лично я эти настройки шрифта ни где не задавал).
0
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
|
12.08.2013, 16:32 [ТС] | 17 |
Пуск –> Выполнить –> cmd
я там установил шрифт: Lucida Console Но все равно при создании новых приложений через Microsoft Visual Studio 2012 у меня настройки такие же как на скриншоте выше.
0
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
|
12.08.2013, 16:40 [ТС] | 19 |
Уже сделал, но результат такой же
Я создал абсолютно новый проект, новый файл, новый код "шаблон", запустил, установил шрифт: Lucida Console, потом сохранил как шаблон для Microsoft Visual Studio 2012, сейчас создал программу, вот что в настройках: а нельзя разве прописать в скобках у main() параметры, в частности что бы этот шрифт устанавливался Lucida Console.
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
12.08.2013, 16:48 | 20 |
У меня такой проблемы нет, настроил один раз и всё. Если у вас не сохраняются настройки консоли, то создайте отдельную тему, может кто подскажет, в чём тут дело.
1
|
12.08.2013, 16:48 | |
12.08.2013, 16:48 | |
Помогаю со студенческими работами здесь
20
При преобразовании string в LPCWSTR не выдает русский язык Перевести файл на русский язык запись string в файл в определенном формате (из Unicode в ASCII. Файл записывать умею) Считывание из файла построчно и запись в файл построчно getline () Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |