178

それを行う最も基本的な方法は何ですか?

4

7 に答える 7

250

STL 互換でコンパイルされている場合、 aを aに変換するQString静的メソッドがあります。std::stringQString

std::string str = "abc";
QString qstr = QString::fromStdString(str);
于 2009-11-29T00:07:33.757 に答える
192

文字列の場合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);

QTextCodec::codecForLocale()const char *で読み取ることができるシステム エンコーディングでエンコードした場合は、次のメソッドを使用する必要があります。

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);

UTF8 でエンコードされている場合はconst char *、次の方法を使用する必要があります。

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);
于 2009-11-29T00:00:02.773 に答える
13

別の方法:

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

これには、最後に を追加する場所がない場合に、 がそれ自体をコピー.c_str()する原因となる可能性のあるを使用しないという利点があります。std::string'\0'

于 2009-11-29T00:10:40.957 に答える
11
std::string s = "Sambuca";
QString q = s.c_str();

警告:std::stringにが含まれている場合、これは機能しません\0

于 2009-11-29T00:04:23.950 に答える
0

文字列のように 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());
于 2009-11-29T00:07:03.577 に答える