当前位置: 首页>>代码示例>>C++>>正文


C++ Ptr::addWord方法代码示例

本文整理汇总了C++中dictionary::Ptr::addWord方法的典型用法代码示例。如果您正苦于以下问题:C++ Ptr::addWord方法的具体用法?C++ Ptr::addWord怎么用?C++ Ptr::addWord使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在dictionary::Ptr的用法示例。


在下文中一共展示了Ptr::addWord方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: import

Dictionary::Ptr Dictionary::import( const QString& fileName )
{
    QFile file( fileName );
    if ( !file.open( QIODevice::ReadOnly | QIODevice::Text ) )
    {
        qDebug() << "Can't open " << fileName << ", err: " << file.errorString();
        return Dictionary::Ptr();
    }

    qint64 total = file.size();
    int numWords = 0;
    int numTranslations = 0;

    Lang src = QLocale::C;
    Lang trg = QLocale::C;
    QString source;
    QStringList targets;

    int ops = 0;
    Database* db = Database::instance();
    db->begin();

    Dictionary::Ptr dict;

    bool ok = true;
    QTextStream in( &file );
    while ( !in.atEnd() )
    {
        QString line = in.readLine();

        if ( line.startsWith('#') )
        {
            if ( line.startsWith( "#INDEX_LANGUAGE" ) )
            {
                src = QLocale::Finnish; // getLang( line );
            }
            else if ( line.startsWith( "#CONTENTS_LANGUAGE" ) )
            {
                trg = QLocale::Russian; // getLang( line );
            }

            if ( src != QLocale::C && trg != QLocale::C )
            {
                dict = Dictionary::Ptr( new Dictionary( LangPair( src, trg ) ) );
                ok = dict->open();
                if ( !ok ) break;
            }
        }
        else if ( !line.isEmpty() && !line[0].isSpace() )
        {
            source = line;
        }
        else if ( line.contains("[trn]") )
        {
            int start = line.indexOf("[trn]") + QString("[trn]").length();
            int end = line.indexOf("[/trn]");
            if ( end > start )
            {
                targets.append( line.mid( start, end - start ) );
            }
        }
        else if ( line.trimmed().isEmpty() && dict )
        {
            int res = dict->addWord( source, targets );
            if ( res < 0 )
            {
                db->rollback();
                ok = false;
                break;
            }
            numWords++;
            numTranslations += res - 1;
            ops++;
            if ( ops % 100 == 0 )
            {
                if ( !db->commit() && !db->begin() )
                {
                    ok = false;
                    break;
                }

                double prog = in.pos() * 100.0 / total;
                emit dict->progress( prog );
                QCoreApplication::processEvents();
            }

            source.clear();
            targets.clear();
        }
    }
    db->commit();
    qDebug() << "Added" << numWords << "new words and" << numTranslations << "new translations";
    return dict;
}
开发者ID:sergburn,项目名称:firu.qt,代码行数:94,代码来源:dictionary.cpp


注:本文中的dictionary::Ptr::addWord方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。