Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.07.2024, 12:02   #1
druidvic
Пользователь
 
Регистрация: 05.06.2016
Сообщений: 66
По умолчанию wprintf и fout

Приветсвую Уважаемые!
Подскажите пжл.

Код:
#define STRICT //строгая проверка типов данных
#define UNICODE //кодировка UTF-8
//операторы препроцессора
#include <locale.h>//заголовочный файл для локализации
#include <fstream>

using namespace std;//пространство имен - Стандартная Библиотека

int main()
{
/*Задает языковой стандарт по умолчанию, т.е. заданную по умолчанию
 для пользователя кодовую страницу ANSI, полученную от операционной системы.
*/
    setlocale(LC_ALL, "");

    wchar_t line [100];
    _getws(line);
    wprintf(L"Вы ввели: %s\n", line);
    ofstream fout;
    fout.open("file.txt");
    fout<<&line;
    fout.close();
    return 0;
}
Проблемы такие:
1. wprintf выводит только 1-й символ вводимой строки. Как печатать всю строку?
2. fout<<&line; пишет 0х код (наверное адрес расположения line). Нужна строка символов.

Но fout<<line; выдает ошибку - error: use of deleted function 'std::basic_ostream<char, _Traits>& std:perator<<(basic_ostream<char, _Traits>&, const wchar_t*) [with _Traits = char_traits<char>]. Как я понял - потоки нельзя копировать.

P.S. Хочу ввести строку с клавы, вывести на терминал и записать в файл.
P.S.S. CodeBlock + GCC + C

Последний раз редактировалось druidvic; 25.07.2024 в 12:05.
druidvic вне форума Ответить с цитированием
Старый 25.07.2024, 12:37   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,815
По умолчанию

Цитата:
Сообщение от druidvic Посмотреть сообщение
1. wprintf выводит только 1-й символ вводимой строки. Как печатать всю строку?
%ls

Цитата:
Сообщение от druidvic Посмотреть сообщение
Но fout<<line; выдает ошибку - error: use of deleted function 'std::basic_ostream<char, _Traits>& stderator<<(basic_ostream<char, _Traits>&, const wchar_t*) [with _Traits = char_traits<char>]. Как я понял - потоки нельзя копировать.
std::wofstream
p51x вне форума Ответить с цитированием
Старый 26.07.2024, 08:08   #3
Алексей1153
фрилансер
Участник клуба
 
Регистрация: 11.10.2019
Сообщений: 1,032
По умолчанию

druidvic, с кодировками не подскажу, это надо по месту разбираться (то есть - самостоятельно )

код из первого поста в человечьем обличии:
Код:
#include <fstream>
#include <iostream>

int main()
{
    std::wstring line;
    std::getline(std::wcin,line);
    std::wcout<<L"Вы ввели: "<<line<<"\n";
    std::wofstream fout("file.txt");
    fout<<line;
    fout.close();
}

Последний раз редактировалось Алексей1153; 26.07.2024 в 08:12.
Алексей1153 вне форума Ответить с цитированием
Старый 26.07.2024, 15:46   #4
druidvic
Пользователь
 
Регистрация: 05.06.2016
Сообщений: 66
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
%ls
std::wofstream
Благодарю!
Изображения
Тип файла: gif шляпа.gif (5.2 Кб, 24 просмотров)
druidvic вне форума Ответить с цитированием
Старый 26.07.2024, 18:02   #5
druidvic
Пользователь
 
Регистрация: 05.06.2016
Сообщений: 66
По умолчанию

Цитата:
Сообщение от Алексей1153 Посмотреть сообщение
код из первого поста в человечьем обличии:
Код:
#include <fstream>
#include <iostream>

int main()
{
    std::wstring line;
    std::getline(std::wcin,line);
    std::wcout<<L"Вы ввели: "<<line<<"\n";
    std::wofstream fout("file.txt");
    fout<<line;
    fout.close();
}
Смотрится красиво, только UTF-8 обрезает до char. Наверное нужно аналог для getline искать. Я не нашел.
druidvic вне форума Ответить с цитированием
Старый 27.07.2024, 07:40   #6
Алексей1153
фрилансер
Участник клуба
 
Регистрация: 11.10.2019
Сообщений: 1,032
По умолчанию

Цитата:
Сообщение от druidvic Посмотреть сообщение
олько UTF-8 обрезает до char
потому что работает с wchar_t

для utf-8 - std::string, std::cin, std::cout, std:: ostream, std::getline

но с консолью вечно какая-то хрень с кодировками

я обычно с GUI работаю, а не с консолью, поэтому вот так сходу не разберусь даже
Алексей1153 вне форума Ответить с цитированием
Старый 27.07.2024, 10:44   #7
druidvic
Пользователь
 
Регистрация: 05.06.2016
Сообщений: 66
Печаль

Цитата:
Сообщение от Алексей1153 Посмотреть сообщение
но с консолью вечно какая-то хрень с кодировками
...поэтому вот так сходу не разберусь даже
Ну мне и пытаться не стоит. Не мой уровень.
druidvic вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск