• 12824阅读
  • 19回复

【提问】 请问如何将QString转换成char [复制链接]

上一主题 下一主题
离线feigao007
 

只看楼主 正序阅读 楼主  发表于: 2005-11-02
给一个函数传递*char参数时,但实参是从QListBox获得Text 时QString .这是需要解决转换,
那位有好的解决办法,请指点!
在线等待!谢谢!
dfhdfhdfh
离线wxyao

只看该作者 19楼 发表于: 2010-04-27
我通常都使用 QString.toAscii().constData(); 都没问题噢;
碰到中文问题,需要使用tr()和codec

char str[100];
memcpy(str, s.toAscii().constData(), 100);
离线cspp

只看该作者 18楼 发表于: 2009-03-05
QString str = “Hello”;
str.toAscii().data();
离线huangjianye
只看该作者 17楼 发表于: 2009-03-05
QString strQT = "3213123";
std::string strSTD = strQT.toStdString();
char *pCh = strSTD.c_str();

char *pData = "中国";
QByteArray encodedString = pData;
QTextCodec *codec = QTextCodec::codecForName("GB2312");
QString str = codec->toUnicode(encodedString);
离线80486

只看该作者 16楼 发表于: 2009-03-04
asii()是比较安全的,latin1和local8bit在多语言环境下会有问题
离线piero10pj
只看该作者 15楼 发表于: 2009-03-04
要将一个QString转换为一个const char *,就使用toAscii()或toLatin1()。 这些函数返回一个QByteArray,它能被转换为一个const char *,通过使用QByteArray::data()或QByteArray::constData()。 例如:

printf("User: %s\n", str.toAscii().data());
离线XChinux

只看该作者 14楼 发表于: 2006-02-22
下面是引用wjydlut于2006-02-21 16:26发表的:
请问包含在那一个 类中toAscii() ?


QString
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线wjydlut

只看该作者 13楼 发表于: 2006-02-22
请问包含在那一个 类中toAscii() ?
离线hetal

只看该作者 12楼 发表于: 2005-11-03
QString a="何涛";
printf("%s",a.toLocal8Bit().data());
离线feigao007

只看该作者 11楼 发表于: 2005-11-02
多谢大家援手了,上面很好。大家集思广益,
用了:
char str[64];
QTextCodec *textcod = QTextCodec::codecForName("GBK");
        QCString string1 = textcod ->fromUnicode(listbox1->currentText());
        strcpy(str,string1);
多谢!
[ 此贴被feigao007在2005-11-02 18:47重新编辑 ]
dfhdfhdfh
离线chenshijie

只看该作者 10楼 发表于: 2005-11-02
方法一
#define G2U(s) ( QTextCodec::codecForName("GBK")->toUnicode(s) )
#define U2G(s) ( QTextCodec::codecForName("GBK")->fromUnicode(s) )

QString str;
QCString cstr;

str = G2U("中文输入");
cstr = U2G(str);

QCString有这样一个重载运算符
operator const char * () const

可以这样
printf("%s\n", (const char*) cstr);
或是copy出来
char buf[1024];
strcpy(buf, (const char*) cstr);

方法二
如果是中文系统

直接用   (const char*) str.local8Bit()
例如
printf("%s", (const char*) str.local8Bit());

str是一个QString


参考Qt Assistant
离线feigao007

只看该作者 9楼 发表于: 2005-11-02
有谁可以解决中文转化吗? 以上几种方法都只是解决一般字符串的转换。
dfhdfhdfh
离线feigao007

只看该作者 8楼 发表于: 2005-11-02
说的是,我碰到的刚好是中文。
现在 问题只解决一部分。
dfhdfhdfh
离线sky_hao

只看该作者 7楼 发表于: 2005-11-02
我也碰到过这样的问题,不过我本人想了这样一个办法,你试试看:


QString string = *******;
QChar da;
char c;
char str[50];
int m = string.size();
for( int k=0;k<m; k++)
{
  da = string.at(i);
  c = da.toAscii();
  str [k] = c;
}

不过,如果是中文,这样就不能识别了:(
[ 此贴被sky_hao在2005-11-02 16:01重新编辑 ]
离线youngki
只看该作者 6楼 发表于: 2005-11-02
QString string = ***;

QChar* p = string.latin1();
知识和财富,只在流通中产生价值
离线feigao007

只看该作者 5楼 发表于: 2005-11-02
给个例子吧老兄,急用!
dfhdfhdfh
离线yfy002

只看该作者 4楼 发表于: 2005-11-02
qchar
const char toLatin1 () const
我渴望平静,风却给了我涟漪
我的blog:
http://sungaoyong.cublog.cn
离线XChinux

只看该作者 3楼 发表于: 2005-11-02
可以先把它转化成string类型的,然后从 string转换为char*
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线feigao007

只看该作者 2楼 发表于: 2005-11-02
但好像不是一个函数能解决的。有向其他数据类型的转换函数。好像没有char得。
dfhdfhdfh
离线XChinux

只看该作者 1楼 发表于: 2005-11-02
QString有成员函数进行转换。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个