Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Особенности файлов


Автор: 88andrey 26.4.2007, 10:16
Есть 2 файла, оба html и html-код одинаковый( разные кодировки  ), но размер файлов отличается

Хотелось бы узнать:

1) Как можно открыть html файл
   ifstream file( “file.html” ); //не хочет работать

2)Как скопировать html файл, так что бы кодировка была одинаковой

3) А какие особенности файлов встричали вы?

Автор: 88andrey 26.4.2007, 10:17
второй файл

Автор: EnergoHokum 27.4.2007, 15:00
В каком смысле открыть? Вывести на stdout? Или вычитать в буфер? Кодировка в основном затрагивает русские тексты, можно на тех-же плюсах наваять перекодировщик...

Автор: dizzy1984 27.4.2007, 18:08
Цитата(88andrey @  26.4.2007,  10:16 Найти цитируемый пост)
1) Как можно открыть html файл
   ifstream file( “file.html” ); //не хочет работать

Хочет, указывай полный путь к файлу.
Указание имени в качестве путя файла сработает только при условии, что он находится в текущей директории.


Цитата(88andrey @  26.4.2007,  10:16 Найти цитируемый пост)
)Как скопировать html файл, так что бы кодировка была одинаковой

Перевести каждый символ из одной кодировки в другую

Автор: EnergoHokum 28.4.2007, 07:38
А зачем полный путь указывать? Можно и относительно текущего каталога, `../` - это переход на каталог выше `./` - текущий каталог.

Автор: 88andrey 28.4.2007, 12:09
Цитата

Указание имени в качестве путя файла сработает только при условии, что он находится в текущей директории.

файл находится в текущей директории

Цитата

Перевести каждый символ из одной кодировки в другую

можно пример

Автор: dizzy1984 1.5.2007, 06:41
Цитата(88andrey @  28.4.2007,  12:09 Найти цитируемый пост)
файл находится в текущей директории

Тогда надо расшифровать
Цитата(88andrey @  26.4.2007,  10:16 Найти цитируемый пост)
//не хочет работать


Цитата(88andrey @  28.4.2007,  12:09 Найти цитируемый пост)
можно пример

Пример. 
Переводим группу символов из windows в dos кодировку

Код

char arr[16]={"привет"};
char arr2[16];
::CharToOemA(arr, arr2);

Автор: Rockie 1.5.2007, 23:46
88andrey, 
Код

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
    string s;

    ifstream file("Vingrad.html");  // хочет работать))

    if(!file) { cout<<"no file"; return 0; }

    for(int i=0;i<5;i++)
    { 
       getline(file, s);
       cout<<s;
    }

    return 0;
}


Цитата(88andrey @  26.4.2007,  10:16 Найти цитируемый пост)
2)Как скопировать html файл, так что бы кодировка была одинаковой

1) CopyFile
2)
Код

#include<stdlib.h>

int main()
{
  system("copy D:\\1.txt C:\\1.txt /A /B /Y");

  return 0;
}



Автор: dizzy1984 2.5.2007, 09:40
Цитата(Rockie @  1.5.2007,  23:46 Найти цитируемый пост)
1) CopyFile

 smile Это не поможет. Файл просто скопируется. Кодировка останется прежней.

Кстати странные флаги для copy. A  и B одновременно.

Автор: Rockie 2.5.2007, 10:52
Цитата(dizzy1984 @  2.5.2007,  09:40 Найти цитируемый пост)
  smile  Это не поможет. Файл просто скопируется. Кодировка останется прежней.

так а надо что?
Цитата(88andrey @  26.4.2007,  10:16 Найти цитируемый пост)
2)Как скопировать html файл, так что бы кодировка была одинаковой



Автор: Dronchik 2.5.2007, 11:19
А у меня не пашет на VC++6
компил ругается
Код

#include <iostream>//.Н добавить надо ,тупой компил 
#include <fstream>
#include <string>

using namespace std; //ошибка в компиле

int main()
{
    string s;//Ваще ни читает сабака

    ifstream file("Vingrad.html");  // хочет работать))

    if(!file) { cout<<"no file"; return 0; }

    for(int i=0;i<5;i++)
    { 
       getline(file, s);
       cout<<s;
    }

    return 0;
}


 smile 

Автор: dizzy1984 2.5.2007, 15:11
Цитата(Rockie @  2.5.2007,  10:52 Найти цитируемый пост)
так а надо что?

Цитата(88andrey @  26.4.2007,  10:16 )    
2)Как скопировать html файл, так что бы кодировка была одинаковой

Не вырывайте фразу из контекста.
Кодировки у этих файлов разные
Цитата(88andrey @  26.4.2007,  10:16 Найти цитируемый пост)
сть 2 файла, оба html и html-код одинаковый( разные кодировки  ),


Цитата(Dronchik @  2.5.2007,  11:19 Найти цитируемый пост)
А у меня не пашет на VC++6

Странно, у меня это скомпилировалось

Автор: Rockie 2.5.2007, 17:02
Цитата(dizzy1984 @  2.5.2007,  15:11 Найти цитируемый пост)
Кодировки у этих файлов разные

dizzy1984, да, точно, проморгал. Ввело в заблуждение слово "скопировать". Тогда уже "переписать html-файл в другой кодировке", ну или как-нибудь так.

Добавлено через 1 минуту и 26 секунд
Dronchik, попробуй добавь .h к файлам и убери строку 
Код

using namespace std;



Автор: Dronchik 18.5.2007, 13:55
Код

#include <iostream>//.Н добавил 
#include <fstream>>//.Н добавил 
#include <string>>//.Н добавил 

using namespace std; //убрал
int main()
{
    string s;//string, s - необъявленный идентификатор
    ifstream file("Vingrad.html");  // хочет работать))

    if(!file) { cout<<"no file"; return 0; }

    for(int i=0;i<5;i++)
    { 
       getline(file, s);
       cout<<s;
    }

    return 0;
}


Автор: Rockie 18.5.2007, 14:27
Dronchik, TC 3.0? Options->Directories-> C:\TC\Include и т.д.

Похоже в TC 3.0 вообще не входит стандартный string. может в VC 6 тоже..



Автор: BigHeart 19.5.2007, 03:06
dizzy1984, почему CharToOemA(...)? ANSI? вроди бы уже положено UNICODE пользоваться... т.е. CharToOemW(...). 
или я что-то пропустил? 

Автор: JackYF 19.5.2007, 11:24
Цитата(BigHeart @  19.5.2007,  03:06 Найти цитируемый пост)
роди бы уже положено UNICODE пользоваться


Положено? А кем и на что? smile

Автор: dizzy1984 21.5.2007, 07:47
BigHeart, подразумевается, в программе будет использован только 1-н язык.

Автор: sstudent 30.5.2007, 09:35
Где можно по подробней узнать о файлах(  например почему размер файла на диске больше чем сам размер файла, и.т.д.  )

Автор: JackYF 30.5.2007, 16:05
google("кластеры")

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)