本文整理汇总了C++中StringList::erase方法的典型用法代码示例。如果您正苦于以下问题:C++ StringList::erase方法的具体用法?C++ StringList::erase怎么用?C++ StringList::erase使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类StringList
的用法示例。
在下文中一共展示了StringList::erase方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: loadExpectations
void loadExpectations(Dictionary &headerCoverage, Dictionary &testMetrics, StringList &testOrder) {
const char * const processor= isIntel() ? "i386" : "ppc";
io::File expectations(std::string("tests/test_")+processor+".txt",
io::File::Text, io::File::ReadOnly);
std::string line;
Dictionary *current= NULL;
bool eof;
do {
expectations.readline(line);
eof= (line.size() == 0);
if(strip(line).size() == 0) {
// ignore blank lines
} else if(line[0] == '-') {
if(line == "-header") {
current= &headerCoverage;
} else if(line == "-test") {
current= &testMetrics;
} else {
current= NULL;
}
} else if(NULL != current) {
StringList parts;
String key, value;
String separator= "";
for(std::string::size_type c= 0; c < line.size(); ++c) {
if(line[c] == ' ') {
line[c]= '\t';
}
}
split(line, '\t', parts);
key= parts[0];
if(current == &testMetrics) {
testOrder.push_back(key);
}
parts.erase(parts.begin());
while(parts.size() > 0) {
if(parts[0].size() > 0) {
value+= separator + parts[0];
separator= ';';
}
parts.erase(parts.begin());
}
(*current)[key]= value;
}
} while(!eof);
}
示例2: breakString_
String ConsoleUtils::breakString_(const OpenMS::String& input, const Size indentation, const Size max_lines)
{
// get the line length
const Int line_len = ConsoleUtils::readConsoleSize_();
StringList result;
Size short_line_len = line_len - indentation;
if (short_line_len < 1)
{
std::cerr << "INTERNAL ERROR: cannot split lines into empty strings! see breakString_()";
return input;
}
for (Size i = 0; i < input.size(); )
{
String line = input.substr(i, result.size() == 0 ? line_len : short_line_len); // first line has full length
Size advance_size = line.size();
if (line.hasSubstring("\n"))
{
advance_size = 0;
while (line.hasPrefix("\n"))
{
line = line.substr(1);
++advance_size;
} // advance by # of \n's
if (line.hasSubstring("\n")) line = line.prefix('\n');
advance_size += line.size(); // + actual chars
}
// check if we are using the full length and split a word at the same time
// cut a little earlier in that case for nicer looks
if (line.size() == (result.size() == 0 ? line_len : short_line_len) && short_line_len > 8 && line.rfind(' ') != String::npos)
{
String last_word = line.suffix(' ');
if (last_word.length() < 4)
{ // shorten by last word (will move to the next line)
line = line.prefix(line.size() - last_word.length());
advance_size -= last_word.size(); // + actual chars
}
}
i += advance_size;
String s_intend = (result.size() == 0 ? "" : String(indentation, ' ')); // first line no indentation
String r = s_intend + (result.size() == 0 ? line : line.trim()); // intended lines get trimmed
result.push_back(r); //(r.fillRight(' ', (UInt) line_len));
}
if (result.size() > max_lines) // remove lines from end if we get too many (but leave the last one)...
{
String last = result.back();
result.erase(result.begin() + max_lines - 2, result.end());
result.push_back((String(indentation, ' ') + String("..."))); //.fillRight(' ',(UInt) line_len));
result.push_back(last);
}
// remove last " " from last line to prevent automatic linebreak
//if (result.size()>0 && result[result.size()-1].hasSuffix(" ")) result[result.size()-1] = result[result.size()-1].substr(0,result[result.size()-1].size()-1);
return ListUtils::concatenate(result, "\n");
}
示例3: fieldList
StringList UserTextIdentificationFrame::fieldList() const
{
StringList l = TextIdentificationFrame::fieldList();
if(!l.isEmpty()) {
StringList::Iterator it = l.begin();
l.erase(it);
}
return l;
}
示例4: cmpMates
void TestRootBoard::cmpMates(std::string bstr, std::string mstr) {
Move ml[256];
Move* good = ml+192;
Move* bad=good;
b->setup(bstr);
b->boards[0].wb.generateMateMoves<false, void>(&good, &bad);
StringList mstrl = split(mstr);
while(good < ml+192) {
std::string res = good++->algebraic();
StringList::iterator i = find(mstrl.begin(), mstrl.end(), res);
if (i!=mstrl.end())
mstrl.erase(i);
else
std::cerr << bstr << ": " << res << " missing mate" << std::endl; }
for (StringList::iterator i = mstrl.begin(); i != mstrl.end(); ++i) {
std::cerr << bstr << ": " << *i << " wrong mate" << std::endl; } }
示例5: getUserProfileNames
StringList UserProfileHandler::getUserProfileNames(bool onlyRealDir) {
StringList result;
Config & config = ConfigManager::getInstance().getCurrentConfig();
File path(File::convertPathSeparators(config.getConfigDir() + "profiles/"));
result = path.getDirectoryList();
if (onlyRealDir) {
StringList::iterator begin = result.begin();
for (int interator = result.size(); --interator >= 0; ) {
if (String(result[interator]).endsWith(".new") || String(result[interator]).endsWith(".old")) {
result.erase(begin + interator);
}
}
}
return result;
}
示例6: Delete
/**
Function to delete an entry from Hash
@internalComponent
@released
@param aString - String which needs to be deleted
*/
void HashTable::Delete(String aString)
{
unsigned int hashVal = Hash(aString);
if(iTable[hashVal].size() > 0)
{
StringList list = iTable[hashVal];
StringList::iterator beginIter = list.begin();
StringList::iterator endIter = list.end();
while(beginIter != endIter)
{
if((*beginIter) == aString)
{
list.erase(beginIter);
iTable[hashVal] = list;
return;
}
++beginIter;
}
}
}
示例7: main
int main ()
{
// Create a list of critters.
StringList critters;
// Insert a few critters.
critters.insert (critters.begin (), "antelope");
critters.insert (critters.begin (), "bear");
critters.insert (critters.begin (), "cat");
// Print out the list.
std::cout << critters << '\n';
// Change cat to cougar.
*std::find (critters.begin (),critters.end (), "cat") = "cougar";
std::cout << critters << '\n';
// Put a zebra at the beginning, an ocelot ahead of antelope,
// and a rat at the end.
critters.push_front ("zebra");
critters.insert (std::find (critters.begin (), critters.end (),
"antelope"), "ocelot");
critters.push_back ("rat");
std::cout << critters << '\n';
// Sort the list (Use list's sort function since the
// generic algorithm requires a random access iterator
// and list only provides bidirectional)
critters.sort ();
std::cout << critters << '\n';
// Now let's erase half of the critters.
StringList::size_type half = critters.size () / 2;
for (StringList::size_type i = 0; i != half; ++i)
critters.erase (critters.begin ());
std::cout << critters << '\n';
return 0;
}
示例8:
int
main(int argc, char **argv)
{
StringList stringList;
StringList::iterator pos;
stringList.push_back(&a);
stringList.push_back(&b);
pos = stringList.begin();
stringList.insert(pos, &c);
for (pos = stringList.begin(); pos != stringList.end(); ++pos) {
cout << *pos << endl;
string *s = *pos;
cout << s->c_str() << (*pos)->c_str() << endl;
}
for (pos = stringList.begin(); pos != stringList.end(); ) {
cout << *pos << endl;
pos = stringList.erase(pos);
}
}
示例9: ParseTag
bool CTagLoaderTagLib::ParseTag(ID3v2::Tag *id3v2, MUSIC_INFO::EmbeddedArt *art, MUSIC_INFO::CMusicInfoTag& tag)
{
if (!id3v2) return false;
ReplayGain replayGainInfo;
ID3v2::AttachedPictureFrame *pictures[3] = {};
const ID3v2::FrameListMap& frameListMap = id3v2->frameListMap();
for (ID3v2::FrameListMap::ConstIterator it = frameListMap.begin(); it != frameListMap.end(); ++it)
{
// It is possible that the taglist is empty. In that case no useable values can be extracted.
// and we should skip the tag.
if (it->second.isEmpty()) continue;
if (it->first == "TPE1") SetArtist(tag, GetID3v2StringList(it->second));
else if (it->first == "TALB") tag.SetAlbum(it->second.front()->toString().to8Bit(true));
else if (it->first == "TPE2") SetAlbumArtist(tag, GetID3v2StringList(it->second));
else if (it->first == "TIT2") tag.SetTitle(it->second.front()->toString().to8Bit(true));
else if (it->first == "TCON") SetGenre(tag, GetID3v2StringList(it->second));
else if (it->first == "TRCK") tag.SetTrackNumber(strtol(it->second.front()->toString().toCString(true), NULL, 10));
else if (it->first == "TPOS") tag.SetDiscNumber(strtol(it->second.front()->toString().toCString(true), NULL, 10));
else if (it->first == "TYER") tag.SetYear(strtol(it->second.front()->toString().toCString(true), NULL, 10));
else if (it->first == "TCMP") tag.SetCompilation((strtol(it->second.front()->toString().toCString(true), NULL, 10) == 0) ? false : true);
else if (it->first == "TENC") {} // EncodedBy
else if (it->first == "TCOP") {} // Copyright message
else if (it->first == "TDRC") tag.SetYear(strtol(it->second.front()->toString().toCString(true), NULL, 10));
else if (it->first == "TDRL") tag.SetYear(strtol(it->second.front()->toString().toCString(true), NULL, 10));
else if (it->first == "TDTG") {} // Tagging time
else if (it->first == "TLAN") {} // Languages
else if (it->first == "TMOO") tag.SetMood(it->second.front()->toString().to8Bit(true));
else if (it->first == "USLT")
// Loop through any lyrics frames. Could there be multiple frames, how to choose?
for (ID3v2::FrameList::ConstIterator lt = it->second.begin(); lt != it->second.end(); ++lt)
{
ID3v2::UnsynchronizedLyricsFrame *lyricsFrame = dynamic_cast<ID3v2::UnsynchronizedLyricsFrame *> (*lt);
if (lyricsFrame)
tag.SetLyrics(lyricsFrame->text().to8Bit(true));
}
else if (it->first == "COMM")
// Loop through and look for the main (no description) comment
for (ID3v2::FrameList::ConstIterator ct = it->second.begin(); ct != it->second.end(); ++ct)
{
ID3v2::CommentsFrame *commentsFrame = dynamic_cast<ID3v2::CommentsFrame *> (*ct);
if (commentsFrame && commentsFrame->description().isEmpty())
tag.SetComment(commentsFrame->text().to8Bit(true));
}
else if (it->first == "TXXX")
// Loop through and process the UserTextIdentificationFrames
for (ID3v2::FrameList::ConstIterator ut = it->second.begin(); ut != it->second.end(); ++ut)
{
ID3v2::UserTextIdentificationFrame *frame = dynamic_cast<ID3v2::UserTextIdentificationFrame *> (*ut);
if (!frame) continue;
// First field is the same as the description
StringList stringList = frame->fieldList();
if (stringList.size() == 1) continue;
stringList.erase(stringList.begin());
String desc = frame->description().upper();
if (desc == "MUSICBRAINZ ARTIST ID")
tag.SetMusicBrainzArtistID(SplitMBID(StringListToVectorString(stringList)));
else if (desc == "MUSICBRAINZ ALBUM ID")
tag.SetMusicBrainzAlbumID(stringList.front().to8Bit(true));
else if (desc == "MUSICBRAINZ ALBUM ARTIST ID")
tag.SetMusicBrainzAlbumArtistID(SplitMBID(StringListToVectorString(stringList)));
else if (desc == "MUSICBRAINZ ALBUM ARTIST")
SetAlbumArtist(tag, StringListToVectorString(stringList));
else if (desc == "REPLAYGAIN_TRACK_GAIN")
replayGainInfo.ParseGain(ReplayGain::TRACK, stringList.front().toCString(true));
else if (desc == "REPLAYGAIN_ALBUM_GAIN")
replayGainInfo.ParseGain(ReplayGain::ALBUM, stringList.front().toCString(true));
else if (desc == "REPLAYGAIN_TRACK_PEAK")
replayGainInfo.ParsePeak(ReplayGain::TRACK, stringList.front().toCString(true));
else if (desc == "REPLAYGAIN_ALBUM_PEAK")
replayGainInfo.ParsePeak(ReplayGain::ALBUM, stringList.front().toCString(true));
else if (desc == "ALBUMARTIST" || desc == "ALBUM ARTIST")
SetAlbumArtist(tag, StringListToVectorString(stringList));
else if (desc == "ARTISTS")
{
if (id3v2->header()->majorVersion() < 4)
tag.SetMusicBrainzArtistHints(StringListToVectorString(TagLib::StringList::split(stringList.front(), TagLib::String("/"))));
else
tag.SetMusicBrainzArtistHints(StringListToVectorString(stringList));
}
else if (desc == "ALBUMARTISTS" || desc == "ALBUM ARTISTS")
{
if (id3v2->header()->majorVersion() < 4)
tag.SetMusicBrainzAlbumArtistHints(StringListToVectorString(TagLib::StringList::split(stringList.front(), TagLib::String("/"))));
else
tag.SetMusicBrainzAlbumArtistHints(StringListToVectorString(stringList));
}
else if (desc == "MOOD")
tag.SetMood(stringList.front().to8Bit(true));
else if (g_advancedSettings.m_logLevel == LOG_LEVEL_MAX)
CLog::Log(LOGDEBUG, "unrecognized user text tag detected: TXXX:%s", frame->description().toCString(true));
}
else if (it->first == "UFID")
// Loop through any UFID frames and set them
for (ID3v2::FrameList::ConstIterator ut = it->second.begin(); ut != it->second.end(); ++ut)
{
ID3v2::UniqueFileIdentifierFrame *ufid = reinterpret_cast<ID3v2::UniqueFileIdentifierFrame*> (*ut);
if (ufid->owner() == "http://musicbrainz.org")
//.........这里部分代码省略.........
示例10: main
int __cdecl main(int argc, char* argv[])
{
if(argc < 3) {
return 0;
}
try {
string tmp;
File src(argv[1], File::READ, File::OPEN, false);
File tgt(argv[2], File::WRITE, File::CREATE | File::TRUNCATE, false);
File example(argv[3], File::WRITE, File::CREATE | File::TRUNCATE, false);
string x = src.read();
x = Text::acpToUtf8(x);
string::size_type k;
while((k = x.find('\r')) != string::npos) {
x.erase(k, 1);
}
StringList l = StringTokenizer<string>(x, '\n').getTokens();
StringIter i;
string varStr;
string varName;
string start;
SimpleXML ex;
for(i = l.begin(); i != l.end(); ) {
if( (k = i->find("// @Strings: ")) != string::npos) {
varStr = i->substr(k + 13);
i = l.erase(i);
} else if( (k = i->find("// @Names: ")) != string::npos) {
varName = i->substr(k + 11);
i = l.erase(i);
} else if(i->find("// @DontAdd") != string::npos) {
i = l.erase(i);
} else if( (k = i->find("// @Prolog: ")) != string::npos) {
start += i->substr(k + 12) + "\r\n";
i = l.erase(i);
} else if(i->size() < 5) {
i = l.erase(i);
} else {
++i;
}
}
if(varStr.empty() || varName.empty()) {
printf("No @Strings or @Names\n");
return 0;
}
varStr += " = {\r\n";
varName += " = {\r\n";
/*
ex.addTag("Language");
ex.addChildAttrib("Name", string("Example Language"));
ex.addChildAttrib("Author", string("FlylinkDC++ Development Team"));
//ex.addChildAttrib("Version", string(A_VERSIONSTRING));
ex.addChildAttrib("Revision", string("1"));
ex.stepIn();
*/
ex.addTag("resources");
ex.stepIn();
string name;
string def;
string xmldef;
string s;
for(i = l.begin(); i != l.end(); i++) {
name.clear();
s = *i;
bool u = true;
for(k = s.find_first_not_of(" \t"); s[k] != ','; k++) {
if(s[k] == '_') {
u = true;
} else if(u) {
name+=s[k];
u = false;
} else {
name+=(char)tolower(s[k]);
}
}
k = s.find("// ");
def = s.substr(k + 3);
xmldef = def.substr(1, def.size() - 2);
/* while( (k = xmldef.find("\\t")) != string::npos) {
xmldef.replace(k, 2, "\t");
}
while( (k = xmldef.find("\\r")) != string::npos) {
xmldef.replace(k, 2, "\r");
}
while( (k = xmldef.find("\\n")) != string::npos) {
xmldef.replace(k, 2, "\n");
}
while( (k = xmldef.find("\\\\")) != string::npos) {
xmldef.replace(k, 2, "\\");
//.........这里部分代码省略.........
示例11: getMetaData
void
Slice::ObjCGenerator::MetaDataVisitor::validate(const ContainedPtr& cont)
{
ModulePtr m = ModulePtr::dynamicCast(cont);
if(m)
{
bool error = false;
bool foundPrefix = false;
StringList meta = getMetaData(m);
for(StringList::iterator p = meta.begin(); p != meta.end();)
{
string s = *p++;
const string prefix = "objc:prefix:";
string name;
if(s.find(prefix) == 0)
{
foundPrefix = true;
name = trim(s.substr(prefix.size()));
if(name.empty())
{
m->definitionContext()->warning(InvalidMetaData, m->definitionContext()->filename(),
m->line(), _msg + " `" + s + "'");
meta.remove(s);
error = true;
}
else
{
if(!addModule(m, name))
{
modulePrefixError(m, s);
}
}
}
else
{
m->definitionContext()->warning(InvalidMetaData, m->definitionContext()->filename(),
m->line(), _msg + " `" + s + "'");
meta.remove(s);
error = true;
}
}
setMetaData(m, meta);
if(!error && !foundPrefix)
{
StringList names = splitScopedName(m->scoped());
string name;
for(StringList::const_iterator i = names.begin(); i != names.end(); ++i)
{
name += *i;
}
if(!addModule(m, name))
{
modulePrefixError(m, "");
}
}
}
EnumPtr en = EnumPtr::dynamicCast(cont);
if(en)
{
StringList meta = getMetaData(en);
for(StringList::iterator p = meta.begin(); p != meta.end();)
{
string s = *p;
if(s != "objc:scoped")
{
en->definitionContext()->warning(InvalidMetaData, en->definitionContext()->filename(),
en->line(), _msg + " `" + s + "'");
meta.erase(p++);
}
else
{
++p;
}
}
setMetaData(en, meta);
}
}