QString에서 char *로 변환
다음 방법으로 QString을 char * 유형으로 변환하려고했지만 작동하지 않는 것 같습니다.
//QLineEdit *line=new QLineEdit();{just to describe what is line here}
QString temp=line->text();
char *str=(char *)malloc(10);
QByteArray ba=temp.toLatin1();
strcpy(str,ba.data());
이 방법으로 가능한 결함을 자세히 설명하거나 다른 방법을 제공 할 수 있습니까?
음, Qt FAQ 는 다음과 같이 말합니다.
int main(int argc, char **argv)
{
QApplication app(argc, argv);
QString str1 = "Test";
QByteArray ba = str1.toLocal8Bit();
const char *c_str2 = ba.data();
printf("str2: %s", c_str2);
return app.exec();
}
그래서 아마도 다른 문제가있을 것입니다. 이것이 정확히 어떻게 작동하지 않습니까?
아마도
my_qstring.toStdString().c_str();
Federico가 지적했듯이 더 안전합니다.
std::string str = my_qstring.toStdString();
const char* p = str.c_str();
최적과는 거리가 멀지 만 작업을 수행 할 것입니다.
개종하는 가장 쉬운 방법은 QString을 에 문자는 * 이다 (QString & STR const를) qPrintable 에 확대 매크로입니다 str.toLocal8Bit().constData()
.
David의 대답은 파일로 출력하거나 화면에 표시하는 데만 사용하는 경우 제대로 작동하지만 함수 또는 라이브러리에 구문 분석을 위해 char *가 필요한 경우이 방법이 가장 잘 작동합니다.
// copy QString to char*
QString filename = "C:\dev\file.xml";
char* cstr;
string fname = filename.toStdString();
cstr = new char [fname.size()+1];
strcpy( cstr, fname.c_str() );
// function that requires a char* parameter
parseXML(cstr);
문자열에 Latin1이 아닌 문자가 포함될 수 있으며 이로 인해 데이터가 정의되지 않습니다. "작동하지 않는 것 같습니다"라는 의미에 따라 다릅니다.
편집 됨
이 방법도 작동합니다
QString str ("Something");
char* ch = str.toStdString().C_str();
올바른 솔루션은 다음과 같습니다.
QString k;
k = "CRAZYYYQT";
char ab[16];
sprintf(ab,"%s",(const char *)((QByteArray)(k.toLatin1()).data()) );
sprintf(ab,"%s",(const char *)((QByteArray)(k.toStdString()).data()));
sprintf(ab,"%s",(const char *)k.toStdString().c_str() );
qDebug()<<"--->"<<ab<<"<---";
문자열에 ASCII가 아닌 문자가 포함 된 경우 다음과 같이하는 것이 좋습니다. s.toUtf8().data()
(또는 s->toUtf8().data()
)
참고 URL : https://stackoverflow.com/questions/2523765/qstring-to-char-conversion
'Programing' 카테고리의 다른 글
avd 에뮬레이터에서 Google Play 스토어가 지원 되나요? (0) | 2020.09.23 |
---|---|
Vim에서 C로 공백을 자동 들여 쓰기? (0) | 2020.09.23 |
react js에서 onchange 이벤트를 트리거하는 가장 좋은 방법은 무엇입니까? (0) | 2020.09.23 |
AWS ECS에서 작업과 서비스의 차이점은 무엇입니까? (0) | 2020.09.23 |
WCF 3.0에서 클라이언트 IP 주소 얻기 (0) | 2020.09.23 |