本文整理汇总了C++中StringList::back方法的典型用法代码示例。如果您正苦于以下问题:C++ StringList::back方法的具体用法?C++ StringList::back怎么用?C++ StringList::back使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类StringList
的用法示例。
在下文中一共展示了StringList::back方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: load
void TOPPASResources::load(const QString& file_name)
{
Param load_param;
ParamXMLFile paramFile;
paramFile.load(String(file_name), load_param);
for (Param::ParamIterator it = load_param.begin(); it != load_param.end(); ++it)
{
StringList substrings;
it.getName().split(':', substrings);
if (substrings.size() != 2 ||
substrings.back() != "url_list" ||
(it->value).valueType() != DataValue::STRING_LIST)
{
std::cerr << "Invalid file format." << std::endl;
return;
}
QString key = (substrings[0]).toQString();
StringList url_list = (it->value);
QList<TOPPASResource> resource_list;
for (StringList::const_iterator it = url_list.begin(); it != url_list.end(); ++it)
{
resource_list << TOPPASResource(QUrl(it->toQString()));
}
add(key, resource_list);
}
}
示例2: parsePluginStringData
void Options::parsePluginStringData(const std::string &str, char separator1, char separator2)
{
StringList valueList;
split(str, valueList, separator1);
if (valueList.size() > 0)
{
StringList keyAndValue;
for (StringList::iterator itr = valueList.begin(); itr != valueList.end(); ++itr)
{
split(*itr, keyAndValue, separator2);
if (keyAndValue.size() > 1)
{
setPluginStringData(keyAndValue.front(), keyAndValue.back());
}
else if (keyAndValue.size() > 0)
{
setPluginStringData(keyAndValue.front(), "true");
}
keyAndValue.clear();
}
}
}
示例3: readStringList
void readStringList(StringList& stringList)
{
uint32_t i = readUInt32BE();
while (i--) {
stringList.push_back(std::string());
readString(stringList.back());
}
}
示例4: 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");
}
示例5: joinComponents
String AbstractFileManager::joinComponents(const StringList& pathComponents) {
if (pathComponents.empty())
return "";
StringStream result;
for (unsigned int i = 0; i < pathComponents.size() - 1; i++)
result << pathComponents[i] << pathSeparator();
result << pathComponents.back();
return result.str();
}
示例6: parseRelations
static int parseRelations()
{
depTable.clear();
confTable.clear();
char assistName[MAX_PATH];
sprintf(assistName, "%s\\%s\\%s", WtoA(getMiscPath(PATH_IPS)), BurnDrvGetTextA(DRV_NAME), "assistant.txt");
//parse ips dat and update the treewidget
FILE* fp = fopen(assistName, "rt");
if (!fp) {
return 1;
}
char s[1024];
char* p = NULL;
string line;
size_t nLen = 0;
size_t pos = string::npos;
while (!feof(fp)) {
if (fgets(s, sizeof s, fp) != NULL) {
p = s;
// skip UTF-8 sig
if (strncmp(p, UTF8_SIGNATURE, strlen(UTF8_SIGNATURE)) == 0) {
p += strlen(UTF8_SIGNATURE);
}
if (p[0] == '#') {
continue; // skip comment
}
getLine(p);
line = p;
pos = line.find(">");
if (pos != string::npos) {
StringList depStrs = split2Str(line, ">");
string parent = *(depStrs.begin());
lowerString(parent);
StringList children = stringSplit(depStrs.back(), ",");
lowerTrimmed(children);
depTable.insert(make_pair(parent, children));
} else {
StringList conflicts = stringSplit(line, ",");
lowerTrimmed(conflicts);
confTable.push_back(conflicts);
}
}
}
return 0;
}
示例7: sanitizePath
String sanitizePath(const String &path)
{
// Standardize slashes to POSIX style
String fixedPath = posixPath(path);
// Check if path is absolute
bool isAbsolute = isAbsolutePath(fixedPath);
// Tokenize path
StringList pathComponents;
std::size_t start = 0;
do {
std::size_t separator = (std::min)(fixedPath.find('/', start), fixedPath.length());
String token = fixedPath.substr(start, separator - start);
if (token.empty() || token == ".") {
// a/./b -> a/b and a//b -> a/b
} else if (token == "..") {
if (pathComponents.empty()) {
// ../a -> ../a
// /../a -> /a
if (!isAbsolute)
pathComponents.push_back(token);
} else {
// ../../a -> ../../a
// a/../c -> c
if (pathComponents.back() == "..")
pathComponents.push_back(token);
else
pathComponents.pop_back();
}
} else {
pathComponents.push_back(token);
}
start = separator + 1;
} while (start < path.length());
// Figure out if we need to add a leading slash
String prefix;
if (strBeginsWith(fixedPath, "/"))
prefix = "/";
// Return reassembled path
return prefix + joinStrings(pathComponents, "/");
}
示例8: searchProc
void SearchContext::searchProc()
{
int id = searchID_;
HANDLE findHandle = INVALID_HANDLE_VALUE;
StringList paths;
paths = params_.paths;
RegexList filespecRegexes;
pcre *matchRegex = NULL;
directoriesSearched_ = 0;
directoriesSkipped_ = 0;
filesSearched_ = 0;
filesSkipped_ = 0;
filesWithHits_ = 0;
linesWithHits_ = 0;
hits_ = 0;
unsigned int startTick = GetTickCount();
bool filespecUsesRegexes = ((params_.flags & SF_FILESPEC_REGEXES) != 0);
bool matchUsesRegexes = ((params_.flags & SF_MATCH_REGEXES) != 0);
delete pokeData_;
pokeData_ = new PokeData;
if(matchUsesRegexes)
{
const char *error;
int erroffset;
int flags = 0;
if(!(params_.flags & SF_MATCH_CASE_SENSITIVE))
flags |= PCRE_CASELESS;
matchRegex = pcre_compile(params_.match.c_str(), flags, &error, &erroffset, NULL);
if(!matchRegex)
{
MessageBox(window_, error, "Match Regex Error", MB_OK);
goto cleanup;
}
}
for(StringList::iterator it = params_.filespecs.begin(); it != params_.filespecs.end(); ++it)
{
std::string regexString = it->c_str();
if(!filespecUsesRegexes)
convertWildcard(regexString);
int flags = 0;
if(!(params_.flags & SF_FILESPEC_CASE_SENSITIVE))
flags |= PCRE_CASELESS;
const char *error;
int erroffset;
pcre *regex = pcre_compile(regexString.c_str(), flags, &error, &erroffset, NULL);
if(regex)
filespecRegexes.push_back(regex);
else
{
MessageBox(window_, error, "Filespec Regex Error", MB_OK);
goto cleanup;
}
}
PostMessage(window_, WM_SEARCHCONTEXT_STATE, 1, 0);
while(!paths.empty())
{
directoriesSearched_++;
stopCheck();
std::string currentSearchPath = paths.back();
std::string currentSearchWildcard = currentSearchPath + "\\*";
paths.pop_back();
WIN32_FIND_DATA wfd;
findHandle = FindFirstFile(currentSearchWildcard.c_str(), &wfd);
if(findHandle == INVALID_HANDLE_VALUE)
continue;
while(FindNextFile(findHandle, &wfd))
{
stopCheck();
bool isDirectory = ((wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0);
if((wfd.cFileName[0] == '.') || (wfd.cFileName[0] == 0))
{
if(isDirectory)
directoriesSkipped_++;
else
filesSkipped_++;
continue;
}
std::string filename = currentSearchPath;
filename += "\\";
filename += wfd.cFileName;
if(isDirectory)
{
if(params_.flags & SF_RECURSIVE)
//.........这里部分代码省略.........