문자열을 QString으로 변경하는 방법은 무엇입니까?
그것을 하는 가장 기본적인 방법은 무엇입니까?
STL은QString
변환하는 정적 방법이 있습니다.std::string
QString
:
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
를 포함합니다.\0
s의
답을 따라가다 문제가 생겨서 이 질문을 하게 되었습니다. 그래서 여기에 해결책을 올립니다.
위의 예는 모두 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
'programing' 카테고리의 다른 글
'instance로 보낸 인식되지 않는 선택기' 오류를 디버깅하려면 어떻게 해야 합니까? (0) | 2023.08.01 |
---|---|
ts1206 데코레이터는 여기서 사용할 수 없습니다. Angular 2 (0) | 2023.08.01 |
Android 8.1로 업그레이드한 후 startForground 실패 (0) | 2023.08.01 |
루트 문서 아래 디렉터리에 없는 문서에 스핑크스를 연결할 수 있습니까? (0) | 2023.08.01 |
scss/css에서 파일 이름 "_" 또는 "_" 앞에 붙이는 이유는 무엇입니까? (0) | 2023.08.01 |