Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Проверка на числовые значения https://www.cyberforum.ru/ cpp-beginners/ thread332823.html
отладка-командная строка: - как чекнуть и вывести алерт текствой введите корректно значение ПРИ ВВОДЕ некорректного значения -как удалять не все поля а только нужные то есть не так в смысле ;) ...
C++ Обратиться к файлу с неизвестным именем, но известным расширением (TXT)
Ломаю голову... По заданному пути, пусть будет C:\\, есть файл *.txt Имя его неизвестно, однако это 100% единственный файл txt в этом каталоге. Как мне выцепить его имя (а желательно полный путь...
Программа тестирования знаний C++
Здравствуйте! Нужна программа тестирования знаний на с++ , консолька... как, например, в книге Лаптева В. "экспресс курс" на 238странице ну или можно ее, только у меня собрать ее не вышло. буду...
C++ Прокоментируйте пару строк bool operator!=(const String &right) const { return !( *this == right ); //Что в этом случае возвращает return //и как вообще работает *this } https://www.cyberforum.ru/ cpp-beginners/ thread332779.html
C++ fatal error - не получаеться решыть.. подскажите https://www.cyberforum.ru/ cpp-beginners/ thread332763.html
#include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv){ cout<<"EK(elipyi4iskie krivue) vprostomu poli"; int P,a,b,p1x,p1y,p2x,p2y,x3,y3;...
Лицензия Visual studio 2010 C++
Всем привет. Меня интересует вопрос , связаный с лицензией. Можна ли выкладывать на сторонних ресурсах(Блогах, форумах) код, написаный на Visual Studio 2010 Ultimate, копия которой предоставлена...
C++ В алфавитном порядке вывести всё звонкие согласные, которые входят в каждое нечетное слово
В алфавитном порядке вывести все звонкие согласные,которые входят в каждое нечетное слово и не входят ни в одно четное слово
C++ указатели Написал тестовую программу, но не компилируется... // test7.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <iostream> #include <fstream> https://www.cyberforum.ru/ cpp-beginners/ thread332681.html
C++ API https://www.cyberforum.ru/ cpp-beginners/ thread332673.html
У windows ест WinAPI, а какое API у *nix?
C++ Ищу начинающих программистов! Ищу начинающих или продвинутых программистов на C++,C,Objective-C,C# для общения и обмена опытом! Недавно таким образом учился знакомый говорит очень помогло. Поэтому кто готов к обмену опытом и к... https://www.cyberforum.ru/ cpp-beginners/ thread332670.html
Эксперт С++
2199 / 1615 / 256
Регистрация: 29.05.2011
Сообщений: 3,316
19.07.2011, 01:19 0

Текстовый файл UTF-8 сохранить как текстовый файл ANSI

19.07.2011, 01:19. Просмотров 7843. Ответов 14
Метки (Все метки)

Ответ

Мой вариант с использованием libiconv. Можно использовать разные комбинации кодировок.
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <iconv.h>
 
int main(void)
{
    FILE *ifp, *ofp;
    size_t inbytesleft = 0, outbytesleft, incount;
    char inbuf[BUFSIZ], outbuf[BUFSIZ];
    char *inbufptr, *outbufptr;
    iconv_t cd;
    int result = 0;
 
    /* перекодируем из UTF8 в WINDOWS-1251 */
    cd = iconv_open("WINDOWS-1251", "UTF8");
    /* вариант с пропуском неправильных последовательностей:
       cd = iconv_open("WINDOWS-1251//IGNORE", "UTF8");   */
 
    if (cd == (iconv_t)-1)
    {
        fprintf(stderr, "iconv_open error\n");
        return result;
    }
 
    ifp = fopen("file.txt", "rb");
    ofp = fopen("output.txt", "wb");
    if (NULL == ifp || NULL == ofp)
    {
        fprintf(stderr, "File open error\n");
        return 1;
    }
 
    inbytesleft = 0;
    /* заполняем свободное пространство входного буфера из файла */
    while (( incount = fread(inbuf+inbytesleft, 1, BUFSIZ - inbytesleft, ifp)) > 0)
    {
        inbytesleft += incount;
        inbufptr = inbuf;
        do { /* перекодируем порциями до тех пор,
                пока переполняется выходной буфер */
            outbytesleft = BUFSIZ;
            outbufptr = outbuf;
            errno = 0;
            iconv(cd, &inbufptr, &inbytesleft,
                    &outbufptr, &outbytesleft);
            /* схохраняем перекодированный кусок */
            if (outbufptr != outbuf)
                fwrite(outbuf, 1, outbufptr - outbuf, ofp);
        } while (E2BIG == errno);
        if (EILSEQ == errno)
        {
            /* если встретилась недопустимая последовательность выходим */
            /* можно пропускать побайтово вручную 
               или добавить суффикс //IGNORE к результирующей кодировке*/
            fprintf(stderr, "Illegal sequence\n");
            return 1;
        }
        /* перемещаем оставшуюся часть входных данных в начало*/
        if (inbytesleft > 0)
            memmove(inbuf, inbufptr, inbytesleft);
    }
 
    if (ferror(ifp) || ferror(ofp))
    {
        fprintf(stderr, "error in files\n");
        result = 1;
    }
 
    iconv_close(cd);
    fclose(ifp);
    fclose(ofp);
 
    return result;
}


Вернуться к обсуждению:
Текстовый файл UTF-8 сохранить как текстовый файл ANSI
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.07.2011, 01:19
Готовые ответы и решения:

Дан текстовый файл, содержащий целые числа. Определить в каждой четной строке максимальное число и записать результаты в новый текстовый файл
Дан текстовый файл, содержащий целые числа. Определить в каждой четной строке максимальное число и...

Дан текстовый файл. Заменить окончание ing каждого слова, встречающегося в заданном предложении на ED и сохранить результат в новый файл.
Всем вечер добрый. Хотелось бы, чтоб кто-нибудь помог с прогой. Её текст ниже: Дан текстовый...

Дано число k (< 10) и текстовый файл, содержащий более k строк. Создать новый текстовый файл, содержащий k последних строк исходного файла
Дано число k (&lt; 10) и текстовый файл, содержащий более k строк. Создать новый текстовый файл,...

Файл: Есть 5 классов, как их записать в текстовый файл?
Ребята пожалуйста кто знает как разобраться с файлами. Есть 5 классов как их записать в текстовый...

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