本文整理汇总了C++中QTextStream::skipWhiteSpace方法的典型用法代码示例。如果您正苦于以下问题:C++ QTextStream::skipWhiteSpace方法的具体用法?C++ QTextStream::skipWhiteSpace怎么用?C++ QTextStream::skipWhiteSpace使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QTextStream
的用法示例。
在下文中一共展示了QTextStream::skipWhiteSpace方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: loadCategories
void MXPImporter::loadCategories( QTextStream &stream, Recipe &recipe )
{
//====================categories====================//
stream.skipWhiteSpace();
QString current = stream.readLine().trimmed();
if ( current.mid( 0, current.indexOf( ":" ) ).simplified().toLower() == "categories" ) {
QString tmp_str = current.mid( current.indexOf( ":" ) + 1, current.length() ).trimmed();
while ( current.trimmed() != "Amount Measure Ingredient -- Preparation Method" && !stream.atEnd() ) {
if ( !tmp_str.isEmpty() ) {
const QStringList categories = tmp_str.split( QRegExp("\t| "), QString::SkipEmptyParts );
for ( QStringList::const_iterator it = categories.constBegin(); it != categories.constEnd(); ++it ) {
Element new_cat( ( *it ).trimmed() );
recipe.categoryList.append( new_cat );
kDebug()<<"Found category: "<<new_cat.name;
}
}
current = stream.readLine();
tmp_str = current;
}
//else
// kDebug()<<"No categories found.";
}
else {
addWarningMsg(i18n( "While loading recipe \"%1\" "
"the field \"Categories:\" is either missing or could not be detected.", recipe.title ) );
//the ingredient loaded will expect the last thing to have been read to be this header line
while ( current.trimmed() != "Amount Measure Ingredient -- Preparation Method" && !stream.atEnd() )
current = stream.readLine();
}
}
示例2: readLine
bool DBFileEntry::readLine(QTextStream& stream)
{
if (stream.status() != QTextStream::Ok || stream.atEnd()) {
return false;
}
stream.skipWhiteSpace();
QString line = stream.readLine();
if (line.isNull()) {
return false;
}
//This fails if the path contains a comma.
//QStringList tokens = line.split(fieldSeparator);
QStringList tokens = StringHelper::split(fieldSeparator, line, 5);
if (tokens.count() < 5) {
return false;
}
if (tokens[0].length() > 0) {
m_linkType = tokens[0].at(0);
}
m_time = QDateTime::fromString(tokens[1], dateTimeFormat);
m_hash = tokens[2];
m_hash = m_hash.toUpper();
bool ok;
m_size = tokens[3].toULongLong(&ok, 10);
if (!ok) {
return false;
}
m_path = tokens[4];
return true;
}
示例3: loadIngredients
void MXPImporter::loadIngredients( QTextStream &stream, Recipe &recipe )
{
//============ingredients=================//
stream.skipWhiteSpace();
( void ) stream.readLine();
QString current = stream.readLine();
if ( !current.contains( "NONE" ) && !current.isEmpty() ) {
while ( !current.isEmpty() && !stream.atEnd() ) {
Ingredient new_ingredient;
//amount
QString amount_str = current.mid( 0, 9 ).simplified();
if ( !amount_str.isEmpty() ) // case of amount_str.isEmpty() correctly handled by class default
{
MixedNumber amount;
QValidator::State state;
state = MixedNumber::fromString( amount_str, amount, false );
if ( state != QValidator::Acceptable )
{
addWarningMsg( i18n( "While loading recipe \"%1\" Invalid amount \"%2\" in the line \"%3\"" , recipe.title, amount_str , current.trimmed() ) );
current = stream.readLine();
continue;
}
new_ingredient.amount = amount.toDouble();
}
//units
QString units( current.mid( 9, 13 ) );
new_ingredient.units = Unit( units.simplified(), new_ingredient.amount );
//name
int dash_index = current.indexOf( "--" );
int length;
if ( dash_index == -1 || dash_index == 24 ) //ignore a dash in the first position (index 24)
length = current.length();
else
length = dash_index - 22;
QString ingredient_name( current.mid( 22, length ) );
new_ingredient.name = ingredient_name.trimmed();
//prep method
if ( dash_index != -1 && dash_index != 24 ) //ignore a dash in the first position (index 24)
new_ingredient.prepMethodList.append( Element(current.mid( dash_index + 2, current.length() ).trimmed()) );
recipe.ingList.append( new_ingredient );
//kDebug()<<"Found ingredient: amount="<<new_ingredient.amount
// <<", unit:"<<new_ingredient.units
// <<", name:"<<new_ingredient.name
// <<", prep_method:"<<prep_method;
current = stream.readLine();
}
}
//else
// kDebug()<<"No ingredients found.";
}
示例4: loadMap
void ColorMap::loadMap( QTextStream& stream )
{
ColorMapNode* pHead, *pTail, *node;
double position, red, green, blue;
int size;
QString junk;
stream.skipWhiteSpace();
junk = stream.readLine(); // ColorMap
stream.skipWhiteSpace();
junk = stream.readLine(); // Number of nodes
stream >> size;
stream.skipWhiteSpace();
junk = stream.readLine(); // Position and R G B
stream >> position >> red >> green >> blue;
pHead = new ColorMapNode(position, red, green, blue, 0, 0);
stream >> position >> red >> green >> blue;
pTail = new ColorMapNode(position, red, green, blue, 0, 0);
node = pHead;
for( int i=1;i<size-1; i++ ) {
stream >> position >> red >> green >> blue;
node->m_pNext = new ColorMapNode(position, red, green, blue, node, 0);
node = node->m_pNext;
}
node->m_pNext = pTail;
pTail->m_pPrev = node;
// if successful, replace lists
delete m_pHead;
m_pHead = pHead;
m_pTail = pTail;
m_Size = size;
}
示例5: loadInstructions
void MXPImporter::loadInstructions( QTextStream &stream, Recipe &recipe )
{
//==========================instructions ( along with other optional fields... mxp format doesn't define end of ingredients and start of other fields )==============//
stream.skipWhiteSpace();
QString current = stream.readLine().trimmed();
while ( !current.contains( "- - - -" ) && !stream.atEnd() ) {
if ( current.trimmed() == "Source:" ) {
Element new_author( getNextQuotedString( stream ) );
recipe.authorList.append( new_author );
//kDebug()<<"Found source: "<<new_author.name<<" (adding as author)";
}
else if ( current.trimmed() == "Description:" ) {
QString description = getNextQuotedString( stream );
//kDebug()<<"Found description: "<<m_description<<" (adding to end of instructions)";
recipe.instructions += "\n\nDescription: " + description;
}
else if ( current.trimmed() == "S(Internet Address):" ) {
QString internet = getNextQuotedString( stream );
//kDebug()<<"Found internet address: "<<m_internet<<" (adding to end of instructions)";
recipe.instructions += "\n\nInternet address: " + internet;
}
else if ( current.trimmed() == "Yield:" ) {
recipe.yield.setAmount(getNextQuotedString( stream ).trimmed().toInt());
recipe.yield.setType(i18n("servings"));
//kDebug()<<"Found yield: "<<recipe.yield.amount<<" (adding as servings)";
}
else if ( current.trimmed() == "T(Cook Time):" ) {
( void ) getNextQuotedString( stream ); //this would be prep time, but we don't use prep time at the moment
//kDebug()<<"Found cook time: "<<m_prep_time<<" (adding as prep time)";
}
else if ( current.trimmed() == "Cuisine:" ) {
Element new_cat( getNextQuotedString( stream ) );
recipe.categoryList.append( new_cat );
//kDebug()<<"Found cuisine (adding as category): "<<new_cat.name;
}
else
recipe.instructions += current + '\n';
current = stream.readLine().trimmed();
}
recipe.instructions = recipe.instructions.trimmed();
//kDebug()<<"Found instructions: "<<m_instructions;
}
示例6: file
bool B9LayoutProjectData::Open(QString filepath, bool withoutVisuals) //returns success
{
int i;
int FileVersion;
bool jumpout = false;
double resx;
double resy;
double xp, yp, zp;//instance positions/rotations/scales
double xr, yr, zr;
double xs, ys, zs;
bool flipped = false;
int numSupports;
int hasFoundation;
QFile file(filepath);
QTextStream in;
QString buff;//for io operations
QString modelpath;//current model this function is trying to load.
//input file operations here
if(!file.open(QIODevice::ReadOnly))
{
return false;
}
//check file extension
if(QFileInfo(filepath).completeSuffix().toLower() != "b9l")
return false;
SetDirtied(false);//presumably good from here so undirty the project
in.setDevice(&file);//begin text streaming.
in >> buff;
if(buff == "ver")//we are looking at a post 1.4 b9 layout file
{
in >> buff;
FileVersion = buff.toInt();//should be 14 or greater.
in.skipWhiteSpace();
mfilename = in.readLine();//get project name
}
示例7: getNextQuotedString
QString MXPImporter::getNextQuotedString( QTextStream &stream )
{
stream.skipWhiteSpace();
QString current = stream.readLine().trimmed();
QString return_str;
if ( current.left( 1 ) == "\"" )
return_str = current.mid( 1, current.length() - 1 );
else
return current;
while ( current.right( 1 ) != "\"" && !stream.atEnd() ) {
current = stream.readLine().trimmed();
return_str += '\n' + current;
}
//take off quote at end
return_str = return_str.mid( 0, return_str.length() - 1 );
return return_str.trimmed();
}
示例8: Node
Soprano::Node Soprano::N3NodeParser::parseNode( QTextStream& s, Node::N3ParserFlags flags ) const
{
clearError();
s.skipWhiteSpace();
Node node;
// we treat the empty string as an empty node without an error
if ( s.atEnd() ) {
return Node();
}
QChar c;
s >> c;
// parser resource node
// ============================================
if ( c == '<' ) {
QString str;
if ( scanStream( s, &str, '>' ) ) {
node = Soprano::Node( QUrl::fromEncoded( str.toLatin1(), flags&Node::StrictUris ? QUrl::StrictMode : QUrl::TolerantMode ) );
}
}
// parse blank node
// ============================================
else if ( c == '_' ) {
s >> c;
if ( c == ':' ) {
// TODO: restrict the charset
QString str;
s >> str;
if ( !str.isEmpty() )
node = Soprano::Node::createBlankNode( str );
}
示例9: importMXP
void MXPImporter::importMXP( QTextStream &stream )
{
Recipe recipe;
kapp->processEvents(); //don't want the user to think its frozen... especially for files with thousands of recipes
//kDebug()<<"Found recipe MXP format: * Exported from MasterCook *";
QString current;
// title
stream.skipWhiteSpace();
recipe.title = stream.readLine().trimmed();
//kDebug()<<"Found title: "<<m_title;
//author
stream.skipWhiteSpace();
current = stream.readLine().trimmed();
if ( current.mid( 0, current.indexOf( ":" ) ).simplified().toLower() == "recipe by" ) {
Element new_author( current.mid( current.indexOf( ":" ) + 1, current.length() ).trimmed() );
recipe.authorList.append( new_author );
//kDebug()<<"Found author: "<<new_author.name;
}
else {
addWarningMsg( i18n( "While loading recipe \"%1\" "
"the field \"Recipe By:\" is either missing or could not be detected.", recipe.title ) );
}
//servings
stream.skipWhiteSpace();
current = stream.readLine().trimmed();
if ( current.mid( 0, current.indexOf( ":" ) ).simplified().toLower() == "serving size" ) {
//allows serving size to be loaded even if preparation time is missing
int end_index;
if ( current.contains( "preparation time", Qt::CaseInsensitive ) )
end_index = current.indexOf( "preparation time", 0, Qt::CaseInsensitive ) - 15;
else
end_index = current.length();
recipe.yield.setAmount(current.mid( current.indexOf( ":" ) + 1, end_index ).trimmed().toInt());
recipe.yield.setType(i18n("servings"));
//kDebug()<<"Found serving size: "<<recipe.yield.amount;
}
else {
addWarningMsg( i18n( "While loading recipe \"%1\" "
"the field \"Serving Size:\" is either missing or could not be detected." , recipe.title ) );
}
if ( current.contains( "preparation time", Qt::CaseInsensitive ) ) {
QString prep_time = current.mid( current.indexOf( ":", current.indexOf( "preparation time", 0, Qt::CaseInsensitive ) ) + 1,
current.length() ).trimmed();
recipe.prepTime = QTime( prep_time.section( ':', 0, 0 ).toInt(), prep_time.section( ':', 1, 1 ).toInt() );
kDebug() << "Found preparation time: " << prep_time ;
}
else {
addWarningMsg( i18n( "While loading recipe \"%1\" "
"the field \"Preparation Time:\" is either missing or could not be detected." , recipe.title ) );
}
loadCategories( stream, recipe );
loadIngredients( stream, recipe );
loadInstructions( stream, recipe );
loadOptionalFields( stream, recipe );
add
( recipe );
if ( !stream.atEnd() ) {
importMXP( stream );
return ;
}
}
示例10: loadOptionalFields
void MXPImporter::loadOptionalFields( QTextStream &stream, Recipe &recipe )
{
//=================after here, fields are optional=========================//
stream.skipWhiteSpace();
QString current = stream.readLine().trimmed();
QString notes;
//Note: we simplified() because some versions of MasterCook have "Exported from MasterCook" and others have "Exported from MasterCook".
// This also could work around a typo or such.
while ( !current.simplified().contains( "Exported from MasterCook" ) && !stream.atEnd() ) {
//suggested wine
if ( current.mid( 0, current.indexOf( ":" ) ).simplified().toLower() == "suggested wine" ) {
QString wine = current.mid( current.indexOf( ":" ) + 1, current.length() ).trimmed();
//kDebug()<<"Found suggested wine: "<<m_wine<<" (adding to end of instructions)";
recipe.instructions += "\n\nSuggested wine: " + wine;
}
//Nutr. Assoc.
if ( current.mid( 0, current.indexOf( ":" ) ).simplified().toLower() == "nutr. assoc." ) {
QString nutr_assoc = current.mid( current.indexOf( ":" ) + 1, current.length() ).trimmed();
//kDebug()<<"Found nutrient association: "<<nutr_assoc<<" (adding to end of instructions)";
recipe.instructions += "\n\nNutrient Association: " + nutr_assoc;
}
else if ( current.mid( 0, current.indexOf( ":" ) ).simplified().toLower() == "per serving (excluding unknown items)" ) { //per serving... maybe we can do something with this info later
QString per_serving_info = current.mid( current.indexOf( ":" ) + 1, current.length() ).trimmed();
//kDebug()<<"Found per serving (excluding unknown items): "<<per_serving_info<<" (adding to end of instructions)";
recipe.instructions += "\n\nPer Serving (excluding unknown items): " + per_serving_info;
}
else if ( current.mid( 0, current.indexOf( ":" ) ).simplified().toLower() == "per serving" ) { //per serving... maybe we can do something with this info later
QString per_serving_info = current.mid( current.indexOf( ":" ) + 1, current.length() ).trimmed();
//kDebug()<<"Found per serving: "<<per_serving_info<<" (adding to end of instructions)";
recipe.instructions += "\n\nPer Serving: " + per_serving_info;
}
else if ( current.mid( 0, current.indexOf( ":" ) ).simplified().toLower() == "food exchanges" ) { //food exchanges... maybe we can do something with this info later
QString food_exchange_info = current.mid( current.indexOf( ":" ) + 1, current.length() ).trimmed();
//kDebug()<<"Found food exchanges: "<<food_exchange_info<<" (adding to end of instructions)";
recipe.instructions += "\n\nFood Exchanges: " + food_exchange_info;
}
else if ( current.mid( 0, current.indexOf( ":" ) ).simplified().toLower() == "serving ideas" ) { //serving ideas
QString serving_ideas = current.mid( current.indexOf( ":" ) + 1, current.length() ).trimmed();
//kDebug()<<"Found serving ideas: "<<m_serving_ideas<<" (adding to end of instructions)";
recipe.instructions += "\n\nServing ideas: " + serving_ideas;
}
else if ( current.mid( 0, current.indexOf( ":" ) ).simplified().toLower() == "notes" ) //notes
notes = current.mid( current.indexOf( ":" ) + 1, current.length() ).trimmed();
else if ( !current.isEmpty() && current != "_____" ) //if it doesn't belong to any other field, assume it a part of a multi-line notes field
notes += '\n' + current;
current = stream.readLine().trimmed();
}
/*possible fields to implement later:
Nutr. Assoc. : 0 0 0 0 0
Ratings : Cholesterol Rating 5 Complete Meal 3
Cost 3 Depth 3
Difficulty 2 Fanciness 7
Fat Content 5 Good For Crowds 10
Intensity 5 Intricacy 2
Kid Appeal 3 Looks 5
Portability 3 Richness 7
Serving Temperature 8 Spicy Hotness 2
Tartness 7
*/
if ( !notes.isEmpty() ) {
//kDebug()<<"Found notes:" << m_notes << "(adding to end of instructions)";
recipe.instructions += "\n\nNotes: " + notes.trimmed();
}
}
示例11: translateTextToBits
//.........这里部分代码省略.........
case '0':
dash(); dash(); dash(); dash(); dash(); break;
case '1':
dot(); dash(); dash(); dash(); dash(); break;
case '2':
dot(); dot(); dash(); dash(); dash(); break;
case '3':
dot(); dot(); dot(); dash(); dash(); break;
case '4':
dot(); dot(); dot(); dot(); dash(); break;
case '5':
dot(); dot(); dot(); dot(); dot(); break;
case '6':
dash(); dot(); dot(); dot(); dot(); break;
case '7':
dash(); dash(); dot(); dot(); dot(); break;
case '8':
dash(); dash(); dash(); dot(); dot(); break;
case '9':
dash(); dash(); dash(); dash(); dot(); break;
case '.':
dot(); dash(); dot(); dash(); dot(); dash(); break;
case ',':
dash(); dash(); dot(); dot(); dash(); dash(); break;
case '?':
dot(); dot(); dash(); dash(); dot(); dot(); break;
case '\'':
dot(); dash(); dash(); dash(); dash(); dot(); break;
case '!':
dash(); dot(); dash(); dot(); dash(); dash(); break;
case '/':
dash(); dot(); dot(); dash(); dot(); break;
case '(':
dash(); dot(); dash(); dash(); dot(); break;
case ')':
dash(); dot(); dash(); dash(); dot(); dash(); break;
case '&':
dot(); dash(); dot(); dot(); dot(); break;
case ':':
dash(); dash(); dash(); dot(); dot(); dot(); break;
case ';':
dash(); dot(); dash(); dot(); dash(); dot(); break;
case '=':
dash(); dot(); dot(); dot(); dash(); break;
case '+':
dot(); dash(); dot(); dash(); dot(); break;
case '-':
dash(); dot(); dot(); dot(); dot(); dash(); break;
case '_':
dot(); dot(); dash(); dash(); dot(); dash(); break;
case '"':
dot(); dash(); dot(); dot(); dash(); dot(); break;
case '$':
dot(); dot(); dot(); dash(); dot(); dot(); dash(); break;
case '@':
dot(); dash(); dash(); dot(); dash(); dot(); break;
case ' ':
// End of a word, so need to add 4 units to the 3-unit character gap:
fourUnitGap();
// Also, clear out any extra whitespace chars:
stream.skipWhiteSpace();
break;
default:
break;
}
// At the end of every character is a 3 unit gap:
threeUnitGap();
}
}
示例12: importNYCGeneric
void NYCGenericImporter::importNYCGeneric( QTextStream &stream )
{
kapp->processEvents(); //don't want the user to think its frozen... especially for files with thousands of recipes
QString current;
stream.skipWhiteSpace();
//title
while ( !( current = stream.readLine() ).isEmpty() && !stream.atEnd() )
m_recipe.title = current;
//categories
while ( !( current = stream.readLine() ).isEmpty() && !stream.atEnd() ) {
if ( current[ 0 ].isNumber() ) {
loadIngredientLine( current );
break;
} //oops, this is really an ingredient line (there was no category line)
QStringList categories = current.split( ',', QString::SkipEmptyParts );
if ( categories.count() > 0 && categories[ 0 ].toUpper() == "none" ) //there are no categories
break;
for ( QStringList::const_iterator it = categories.constBegin(); it != categories.constEnd(); ++it ) {
Element new_cat( QString( *it ).trimmed() );
kDebug() << "Found category: " << new_cat.name ;
m_recipe.categoryList.append( new_cat );
}
}
//ingredients
while ( !( current = stream.readLine() ).isEmpty() && !stream.atEnd() )
loadIngredientLine( current );
//everything else is the instructions with optional "contributor", "prep time" and "yield"
bool found_next;
while ( !( found_next = ( current = stream.readLine() ).startsWith( "@@@@@" ) ) && !stream.atEnd() ) {
if ( current.startsWith( "Contributor:" ) ) {
Element new_author( current.mid( current.indexOf( ':' ) + 1, current.length() ).trimmed() );
kDebug() << "Found author: " << new_author.name ;
m_recipe.authorList.append( new_author );
}
else if ( current.startsWith( "Preparation Time:" ) ) {
m_recipe.prepTime = QTime::fromString( current.mid( current.indexOf( ':' ), current.length() ) );
}
else if ( current.startsWith( "Yield:" ) ) {
int colon_index = current.indexOf( ':' );
int amount_type_sep_index = current.indexOf(" ",colon_index+1);
m_recipe.yield.setAmount(current.mid( colon_index+2, amount_type_sep_index-colon_index ).toDouble());
m_recipe.yield.setType(current.mid( amount_type_sep_index+3, current.length() ));
}
else if ( current.startsWith( "NYC Nutrition Analysis (per serving or yield unit):" ) ) {
//m_recipe.instructions += current + '\n';
}
else if ( current.startsWith( "NYC Nutrilink:" ) ) {
//m_recipe.instructions += current + '\n';
}
else if ( !current.trimmed().isEmpty() && !current.startsWith("** Exported from Now You're Cooking!") ) {
m_recipe.instructions += current + '\n';
}
}
m_recipe.instructions = m_recipe.instructions.trimmed();
putDataInRecipe();
if ( found_next )
importNYCGeneric( stream );
}