1. ホーム
  2. c++

[解決済み] 文字列をQStringに変更するには?

2022-02-18 12:22:16

質問

最も基本的な方法は何ですか?

どのように解決するのですか?

文字列というのは std::string このメソッドでできます。

QString QString::fromStdString(const std::string & str)

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


文字列というのがアスキーコード化されたものを指すのであれば 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);