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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Проверка на числовые значения http://www.cyberforum.ru/cpp-beginners/thread332823.html
отладка-командная строка: - как чекнуть и вывести алерт текствой введите корректно значение ПРИ ВВОДЕ некорректного значения -как удалять не все поля а только нужные то есть не так в смысле ;) system("cls"); Добавлено через 58 минут Может быть непонятно перефразирую 1) как проверить поле на ввод именно числового а не буквенного(спец.символы и тд) сивола в консоле? ну и вывести сервис...
C++ Обратиться к файлу с неизвестным именем, но известным расширением (TXT) Ломаю голову... По заданному пути, пусть будет C:\\, есть файл *.txt Имя его неизвестно, однако это 100% единственный файл txt в этом каталоге. Как мне выцепить его имя (а желательно полный путь к нему) средствами c++? Среда visual studio 2010 Заранее благодарен http://www.cyberforum.ru/cpp-beginners/thread332818.html
Программа тестирования знаний C++
Здравствуйте! Нужна программа тестирования знаний на с++ , консолька... как, например, в книге Лаптева В. "экспресс курс" на 238странице ну или можно ее, только у меня собрать ее не вышло. буду благодарен любой помощи!
Прокоментируйте пару строк C++
bool operator!=(const String &right) const { return !( *this == right ); //Что в этом случае возвращает return //и как вообще работает *this }
C++ fatal error - не получаеться решыть.. подскажите http://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; double l1,Lamda; cout<<"y^2 = x^3 + a x + b ( mod P) \n"; cout<<"vvedite a:\n";
C++ Лицензия Visual studio 2010 Всем привет. Меня интересует вопрос , связаный с лицензией. Можна ли выкладывать на сторонних ресурсах(Блогах, форумах) код, написаный на Visual Studio 2010 Ultimate, копия которой предоставлена мне в целях учебы моей академией. Прошу помочь.Зарание спасибо подробнее

Показать сообщение отдельно
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
19.07.2011, 01:19     Текстовый файл UTF-8 сохранить как текстовый файл ANSI
Мой вариант с использованием 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;
}
 
Текущее время: 03:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru