📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

228行目: 228行目:
以下の例では、<nowiki><table></nowiki>タグから<nowiki></table></nowiki>タグまでの文字列を正規表現を使用して削除している。<br>
以下の例では、<nowiki><table></nowiki>タグから<nowiki></table></nowiki>タグまでの文字列を正規表現を使用して削除している。<br>
<code>QRegularExpression::DotMatchesEverythingOption</code>オプションは、"."を使用することにより改行文字にもマッチするようにしている。<br>
<code>QRegularExpression::DotMatchesEverythingOption</code>オプションは、"."を使用することにより改行文字にもマッチするようにしている。<br>
これは、<table>タグが複数行に跨っている場合でも対応するためである。<br>
これは、<syntaxhighlight lang="c++">
QString description = R"(<div>Some content before the table <table><tr><td>Cell content</td></tr></table> and some content after.</div>)";
// "<table>"から"</table>"までの内容を含む正規表現パターン
QRegularExpression tableTagPattern("<table.*>.*</table>", QRegularExpression::DotMatchesEverythingOption);
// 該当するパターンを全て削除
description.remove(tableTagPattern);
</syntaxhighlight><syntaxhighlight lang="c++">
QString strUTF16 = "Sample";
// LinuxまたはMacOSにおいて、UTF-8を使用している場合
std::string strUTF8 = strUTF16.toUtf8().constData();
// toStdStringメソッドは変換される文字列がUTF-8でエンコードされていることを前提としている
// QStringが別のエンコーディング (例: UTF-16) を使用している場合、正しく変換されない可能性があるため注意
std::string strUTF8 = strUTF16.toStdString();
// Windowsにおいて、UTF-8を使用している場合
std::string strCurrentLocale = strUTF16.toLocal8Bit().constData();
</syntaxhighlight><syntaxhighlight lang="c++">
QString    strData  = "文字列";
QByteArray byaryData = strData.toUtf8();
// または
#include <QTextCodec>
QString strData = "文字列";
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QByteArray byaryData = codec->fromUnicode(strData);
</syntaxhighlight><syntaxhighlight lang="c++">
QByteArray byaryData = file.readAll();
QString    strData  = QString::fromUtf8(byaryData);
</syntaxhighlight><syntaxhighlight lang="c++">
#include <QTextCodec>
// Shift-JISでエンコードされた文字列
QString SJISText = QStringLiteral("こんにちは");  // Shift-JISでエンコードされた文字列
// Shift-JISのコーデックを取得
QTextCodec *codec = QTextCodec::codecForName("Shift-JIS");
// Shift-JISのQByteArrayに変換
QByteArray shiftJISBytes = codec->fromUnicode(SJISText);
// UTF-8の文字列に変換
QString utf8String = QString::fromUtf8(shiftJISBytes);
// または
QString utf8String = codec->toUnicode(shiftJISBytes);; </syntaxhighlight><syntaxhighlight lang="c++">
// UTF-8でエンコードされた文字列
QString utf8Text = QStringLiteral("こんにちは");
// Shift-JISのコーデックを取得
QTextCodec *codec = QTextCodec::codecForName("Shift-JIS");
// UTF-8のQStringをShift-JISのQByteArrayに変換
QByteArray shiftJISBytes = codec->fromUnicode(utf8Text);
</syntaxhighlight><syntaxhighlight lang="c++">
// UTF-8でエンコードされた文字列
QString utf8Text = QStringLiteral("こんにちは");
// EUC-JPのコーデックを取得
QTextCodec *codec = QTextCodec::codecForName("EUC-JP");
// UTF-8の文字列をEUC-JPのQByteArrayに変換
QByteArray eucJPBytes = codec->fromUnicode(utf8String);
// EUC-JPエンコードされたデータを16進数で表示
std::cout << eucJPText.toHex() << std::endl;
</syntaxhighlight><syntaxhighlight lang="c++">
#include <QCoreApplication>
#include <QVariant>
#include <cmath>
QString convertNumberToString(const QVariant &value)
{
    if (value.type() == QVariant::Int || value.type() == QVariant::LongLong) {
      // 数値が整数の場合
      return value.toString();
      // 戻り値が整数型の場合
      //return value.toInt();
    }
    else if (value.type() == QVariant::Double) {
      // 数値が浮動小数点の場合
      double number = value.toDouble();
      // 戻り値がQStringクラスの場合、小数点以下を切り捨て
      double intPart;
      std::modf(number, &intPart);
      return QString::number(intPart, 'f', 0);  // 'f'フォーマットと0桁で小数点以下を除去
      // 戻り値が整数型の場合
      //return static_cast<int>(std::floor(number));
    }
    // その他の型の場合は空のQStringを返す
    return QString();
    // 戻り値が整数型の場合、その他の型の場合は0を返す
    //return 0;
}
int main(int argc, char *argv[])
{
    QCoreApplication app(argc, argv);
 
    // 整数を渡す例
    QVariant intValue = 42;
    QString intResult = convertNumberToString(intValue);
    std::cout << QString("整数の結果 : %1").arg(intResult).toStdString() << std::endl;  // "42"と表示
    // 浮動小数点数を渡す例
    QVariant floatValue = 42.56;
    QString floatResult = convertNumberToString(floatValue);
    std::cout << QString("浮動小数点数の結果(小数点以下除去) : %1").arg(floatResult).toStdString() << std::endl;  // "42"と表示
    return app.exec();
}
</syntaxhighlight><syntaxhighlight lang="c++">
QStringList list;
list << "apple" << "banana" << "cherry";
// 特定の要素が存在するかどうかを確認
bool exists = list.contains("hoge");
if (exists) {
    qDebug() << "要素\"hoge\"が存在します";
}
else {
    qDebug() << "要素\"hoge\"は存在しません";
}
</syntaxhighlight><syntaxhighlight lang="c++">
QStringList list = {"foo", "bar", "hoge", "baz"};
QMutableListIterator<QString> i(list);
while (i.hasNext()) {
    if (i.next() == "hoge") {
      i.remove();
    }
}
</syntaxhighlight><syntaxhighlight lang="c++">
// QStringListからQListへ変換
QStringList list = {"foo", "bar", "hoge", "baz"};
QList<QString> qlist = list;
// 特定の要素を削除するラムダ式 (この場合は、要素"hoge"を削除)
auto newEnd = std::remove_if(qlist.begin(), qlist.end(), [](const QString &value) {
    return value == "hoge";
});
// リストから要素を削除
qlist.erase(newEnd, qlist.end());
// QListからQStringListへ変換
list = QStringList::fromList(qlist);
</syntaxhighlight><table>タグが複数行に跨っている場合でも対応するためである。<br>
  <syntaxhighlight lang="c++">
  <syntaxhighlight lang="c++">
  QString description = R"(<div>Some content before the table <table><tr><td>Cell content</td></tr></table> and some content after.</div>)";
  QString description = R"(<div>Some content before the table <table><tr><td>Cell content</td></tr></table> and some content after.</div>)";