Russian Qt Forum
Ноябрь 23, 2024, 02:13 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Преобразование кодировки DOS в windows-1251  (Прочитано 10384 раз)
ffldove
Гость
« : Ноябрь 23, 2009, 11:43 »

Есть прграмма
Код:
#include <QtCore/qtextstream.h>
#include <QtCore/qstring.h>
#include <QtCore/qlist.h>
#include <QtCore/qtextcodec.h>
#include <QFile>

int main ()
{
QFile read_file ("read_file.000");
QFile write_file ("write_file.000");
write_file.open(QIODevice::WriteOnly);
read_file.open(QIODevice::ReadOnly);
QTextStream read_stream(&read_file);
QTextStream write_stream(&write_file);
QString str;
while (!read_stream.atEnd()) {
str=read_stream.readLine();
//вставить код перекодировки строки
write_stream<<str+"\n";
}
read_file.close();
write_file.close();
}

Требуется преобразовать строку из кодировки dos (cp866) (исходный файл в этой кодировке) в windows-1251 (cp1251) (на выходе требуется эта кодировка).
Пробовал типа
Код:
	QTextCodec *codec = QTextCodec::codecForName("CP866");
QString str2 = codec->toUnicode(str);
но здесь в unicode, да и к тому же не работает.
Как можно это сделать?
Записан
Zmeishe
Гость
« Ответ #1 : Ноябрь 23, 2009, 12:33 »

У класса QTextStream есть функция setCodec()

Попробуй
read_stream.setCodec( QTextCodec::codecForName("CP866") );
write_stream.setCodec( QTextCodec::codecForName("CP1251") );
Записан
ffldove
Гость
« Ответ #2 : Ноябрь 23, 2009, 13:28 »

У класса QTextStream есть функция setCodec()

Попробуй
read_stream.setCodec( QTextCodec::codecForName("CP866") );
write_stream.setCodec( QTextCodec::codecForName("CP1251") );

Спасибо.
Тогда еще вопросик вроде как в QTextStream есть функции по автоматическому форматированию текста, нет там случаем функции которая убирает все пробелы в начале и конце строки символов?
Пробовал
Код:
new_str=str.strsimplifyWhiteSpace()
выдает ошибку
 error: 'class QString' has no member named 'simplifyWhiteSpace'
« Последнее редактирование: Ноябрь 23, 2009, 15:20 от ffldove » Записан
Zmeishe
Гость
« Ответ #3 : Ноябрь 23, 2009, 15:38 »

QString QString::simplified () const

Returns a string that has whitespace removed from the start and the end, and that has each sequence of internal whitespace replaced with a single space.

Whitespace means any character for which QChar::isSpace() returns true. This includes the ASCII characters '\t', '\n', '\v', '\f', '\r', and ' '.

Example:

     QString str = "  lots\t of\nwhitespace\r\n ";
     str = str.simplified();
     // str == "lots of whitespace";
Записан
ffldove
Гость
« Ответ #4 : Ноябрь 23, 2009, 15:46 »

Отлично, Спасибо.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.046 секунд. Запросов: 20.