char* fromQStringToChar(QString str){ char *tmpC=new char [str.size()]; ///Вот тут сайз возвращает правильную длину, но размерность у чара при этом становиться где-то на 15 больше. Что такое? QVariant var; for(int i=0;i<str.length();i++) { var=str.at(i); tmpC[i] = var.toChar().toAscii(); } return tmpC;}
tmpC[i] = var.toChar().toAscii(); написалось: tmpC = var.toChar().toAscii();
char* fromQStringToChar(const QString &str){ QByteArray array = str.toLocal8Bit(); char *tmpC=new char [array.size()]; memmove(tmpC, array.constData(), array.size()); return tmpC;}
void QStrToOem(QString *s,unsigned char* buffer,int *len){ QTextCodec *codec = QTextCodec::codecForName("IBM 866"); QByteArray tmp=codec->fromUnicode ( *s ); *len=tmp.length(); memmove (buffer,tmp.constData(),*len); buffer[*len]=0; return; }void OemToQStr(QString *s,unsigned char* buffer,long len){ *s=""; QByteArray tmp ((char*)buffer); QTextCodec *codec = QTextCodec::codecForName("IBM 866"); *s = codec->toUnicode( tmp ); return; }Ну и с локальной кодировкойstrcpy(buffer,qPrintable(s));
char* fromQStringToChar( const QString& str ){ char *tmpC=new char [str.size() + 1]; QVariant var; for(int i=0;i<str.length();i++) { var=str.at(i); tmpC[i] = var.toChar().toAscii(); } tmpC[str.size()] = 0; return tmpC;}
cstr = str.toLocal8Bit();
const char *ch = qPrintable(str);// using ch