문제

가장 기본적인 방법은 무엇입니까?

도움이 되었습니까?

해결책

문자열로 당신은 의미합니다 std::string 이 방법으로 할 수 있습니다.

Qstring Qstring :: Fromstdstring (const std :: string & str)

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

문자열로 ASCII가 인코딩된다는 것을 의미합니다 const char * 그런 다음이 방법을 사용할 수 있습니다.

Qstring Qstring :: FromAscii (const char * str, int size = -1)

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

당신이 가지고 있다면 const char * 읽을 수있는 시스템 인코딩으로 인코딩 qtextCodec :: CodeCForLocale () 그런 다음이 방법을 사용해야합니다.

Qstring QString :: Fromlocal8bit (const char * 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 (const char * 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 (const Ushort * Unicode, 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);

다른 팁

STL 호환성으로 컴파일 된 경우 QString a 정적 방법 변환하려면 std::string a QString:

std::string str = "abc";
QString qstr = QString::fromStdString(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에스.

답을 따를 때 문제가 있었기 때문에이 질문을 발견 했으므로 여기에 솔루션을 게시했습니다.

위의 예는 모두 ASCII 값 만 포함 된 문자열을 갖는 샘플을 보여 주며,이 경우 모든 것이 잘 작동합니다. 그러나 Windows에서 문자열을 다룰 때 Whcih는 독일 Umlauts와 같은 다른 문자를 포함 할 수 있습니다. 그러면 이러한 솔루션은 작동하지 않습니다.

그러한 경우에 올바른 결과를 제공하는 유일한 코드는

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

그러한 줄을 다룰 필요가 없다면 위의 답변은 잘 작동합니다.

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

예를 들어:

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

당신은 c 문자열을 의미합니까? char* 문자열 또는 C ++ std::string 물체?

어느 쪽이든, 당신은 QT 참조에 문서화 된 것과 동일한 생성자를 사용합니다.

일반 C 문자열의 경우 기본 생성자 만 사용하십시오.

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

a std::string, 당신은 얻습니다 char* 버퍼에게 전달하십시오 QString 건설자:

std::string name2("Stack Overflow");
QString qname2(name2.c_str());
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top