programing

문자열을 QString으로 변경하는 방법은 무엇입니까?

firstcheck 2023. 8. 1. 21:12
반응형

문자열을 QString으로 변경하는 방법은 무엇입니까?

그것을 하는 가장 기본적인 방법은 무엇입니까?

STL은QString변환하는 정적 방법이 있습니다.std::stringQString:

std::string str = "abc";
QString qstr = QString::fromStdString(str);

만약 당신이 끈을 의미한다면.std::string다음 방법으로 수행할 수 있습니다.

QString QString::fromStdString(constststd::string & str)

std::string str = "Hello world";
QString qstr = QString::fromStdString(str);

된 아스키를 에는 아스키를 사용합니다.const char *그런 다음 다음 방법을 사용할 수 있습니다.

QString QString::ASCII에서(const char * str, int size = -1)

const char* str = "Hello world";
QString qstr = QString::fromAscii(str);

가지고 계신다면,const char *QTextCodec::codecForLocale()로 읽을 수 있는 시스템 인코딩으로 인코딩된 다음 다음 방법을 사용해야 합니다.

QString QString::Local8Bit(constchar * str, int size = -1)로부터

const char* str = "zażółć gęślą jaźń";      // latin2 source file and system encoding
QString qstr = QString::fromLocal8Bit(str);

가지고 계신다면,const char *UTF8로 인코딩된 경우 다음 방법을 사용해야 합니다.

QString QString::FromUtf8(constchar * str, int size = -1)

const char* str = read_raw("hello.txt"); // assuming hello.txt is UTF8 encoded, and read_raw() reads bytes from file into memory and returns pointer to the first byte as const char*
QString qstr = QString::fromUtf8(str);

다음을 위한 방법도 있습니다.const ushort *UTF16 인코딩 문자열 포함:

QString QString::FromUtf16(연속 단축 * 유니코드, int size = -1)

const ushort* str = read_raw("hello.txt"); // assuming hello.txt is UTF16 encoded, and read_raw() reads bytes from file into memory and returns pointer to the first byte as const ushort*
QString qstr = QString::fromUtf16(str);

다른 방법:

std::string s = "This is an STL string";
QString qs = QString::fromAscii(s.data(), s.size());

은 이은사용않있장다습니점이는을 하지 않는 ..c_str()그것이 원인이 될 수도 있습니다.std::string이 없는 경우 복사하기'\0'

std::string s = "Sambuca";
QString q = s.c_str();

경고:이것은 만약 그것이 작동하지 않을 것입니다.std::string를 포함합니다.\0s의

답을 따라가다 문제가 생겨서 이 질문을 하게 되었습니다. 그래서 여기에 해결책을 올립니다.

위의 예는 모두 ASCII 값만 포함하는 문자열이 있는 샘플을 보여주며, 이 경우 모든 것이 정상적으로 작동합니다.그러나 독일어 umlaut와 같은 다른 문자도 포함할 수 있는 Windows의 문자열을 처리할 때 이러한 솔루션이 작동하지 않습니다.

이러한 경우에 정확한 결과를 제공하는 유일한 코드는 다음과 같습니다.

std::string s = "Übernahme";
QString q = QString::fromLocal8Bit(s.c_str());

만약 당신이 그러한 조건들을 다룰 필요가 없다면, 위의 대답들은 잘 작동할 것입니다.

당신은 C 문자열을 의미합니까?char* C++ 문자 또는 C++std::string목적어?

어느 쪽이든 QT 참조에 설명된 것처럼 동일한 생성자를 사용합니다.

일반 C 문자열의 경우 주 생성자를 사용합니다.

char name[] = "Stack Overflow";
QString qname(name);

당분간std::string당신은 그것을 얻습니다.char*버퍼에 전달하고 그것을 버퍼에 전달합니다.QString생성자:

std::string name2("Stack Overflow");
QString qname2(name2.c_str());

또한 원하는 것을 변환하려면 QVariant 클래스를 사용할 수 있습니다.

예:

std::string str("hello !");
qDebug() << QVariant(str.c_str()).toString();
int test = 10;
double titi = 5.42;
qDebug() << QVariant(test).toString();
qDebug() << QVariant(titi).toString();
qDebug() << QVariant(titi).toInt();

산출량

"hello !"
"10"
"5.42"
5

언급URL : https://stackoverflow.com/questions/1814189/how-to-change-string-into-qstring

반응형