それを行う最も基本的な方法は何ですか?
7 に答える
STL 互換でコンパイルされている場合、 aを aに変換するQString
静的メソッドがあります。std::string
QString
std::string str = "abc";
QString qstr = QString::fromStdString(str);
文字列の場合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);
別の方法:
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
。
文字列のように 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());