本文整理汇总了C++中AString::find方法的典型用法代码示例。如果您正苦于以下问题:C++ AString::find方法的具体用法?C++ AString::find怎么用?C++ AString::find使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AString
的用法示例。
在下文中一共展示了AString::find方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: parseAuthMethod
bool ARTSPConnection::parseAuthMethod(const sp<ARTSPResponse> &response) {
ssize_t i = response->mHeaders.indexOfKey("www-authenticate");
if (i < 0) {
return false;
}
AString value = response->mHeaders.valueAt(i);
if (!strncmp(value.c_str(), "Basic", 5)) {
mAuthType = BASIC;
} else {
#if !defined(HAVE_ANDROID_OS)
// We don't have access to the MD5 implementation on the simulator,
// so we won't support digest authentication.
return false;
#endif
CHECK(!strncmp(value.c_str(), "Digest", 6));
mAuthType = DIGEST;
i = value.find("nonce=");
CHECK_GE(i, 0);
CHECK_EQ(value.c_str()[i + 6], '\"');
ssize_t j = value.find("\"", i + 7);
CHECK_GE(j, 0);
mNonce.setTo(value, i + 7, j - i - 7);
}
return true;
}
示例2: receiveRTSPRequest
bool ARTSPConnection::receiveRTSPRequest() {
AString requestLine;
LOGI(LOG_TAG,"start receiveLine ......\n");
if (!receiveLine(&requestLine)) {
return false;
}
// LOGI(LOG_TAG,"receiveLine OK\n");
sp<AMessage> request = new AMessage(kWhatRequest,mhandlerID);
request->setInt32("SessionID",mSessionID);
LOGI(LOG_TAG,"request->setInt32 SessionID %d\n",mSessionID);
LOGI(LOG_TAG,"request: %s\n", requestLine.c_str());
ssize_t space1 = requestLine.find(" ");//寻找空格
if (space1 < 0) {
return false;
}
ssize_t space2 = requestLine.find(" ", space1 + 1);
if (space2 < 0) {
return false;
}
AString Method(requestLine.c_str(), space1);
request->setString("Method",Method.c_str());
AString URI(requestLine,space1+1,space2-space1-1);
request->setString("URI",URI.c_str());
AString line;
for (;;) {
if (!receiveLine(&line)) {
break;
}
if (line.empty()) {
break;
}
ssize_t colonPos = line.find(":");
if (colonPos < 0) {
// Malformed header line.
return false;
}
AString key(line, 0, colonPos);
key.trim();
// key.tolower();
line.erase(0, colonPos + 1);
line.trim();
LOGI(LOG_TAG,"line: %s:%s\n", key.c_str(),line.c_str());
request->setString(key.c_str(),line.c_str());
}
LOGI(LOG_TAG,"Post the request to handler\n");
request->post();//将请求消息发送给uplayer 处理
return OK;
}
示例3: GetMethodAndURL
static void GetMethodAndURL(
const AString &request, AString *method, AString *url) {
ssize_t space1 = request.find(" ");
CHECK_GE(space1, 0);
ssize_t space2 = request.find(" ", space1 + 1);
CHECK_GE(space2, 0);
method->setTo(request, 0, space1);
url->setTo(request, space1 + 1, space2 - space1);
}
示例4: attr
// static
status_t M3UParser::parseStreamInf(
const AString &line, sp<AMessage> *meta) {
ssize_t colonPos = line.find(":");
if (colonPos < 0) {
return ERROR_MALFORMED;
}
size_t offset = colonPos + 1;
while (offset < line.size()) {
ssize_t end = line.find(",", offset);
if (end < 0) {
end = line.size();
}
AString attr(line, offset, end - offset);
attr.trim();
offset = end + 1;
ssize_t equalPos = attr.find("=");
if (equalPos < 0) {
continue;
}
AString key(attr, 0, equalPos);
key.trim();
AString val(attr, equalPos + 1, attr.size() - equalPos - 1);
val.trim();
LOGV("key=%s value=%s", key.c_str(), val.c_str());
if (!strcasecmp("bandwidth", key.c_str())) {
const char *s = val.c_str();
char *end;
unsigned long x = strtoul(s, &end, 10);
if (end == s || *end != '\0') {
// malformed
continue;
}
if (meta->get() == NULL) {
*meta = new AMessage;
}
(*meta)->setInt32("bandwidth", x);
}
}
return OK;
}
示例5: GetMethodAndURL
static void GetMethodAndURL(
const AString &request, AString *method, AString *url) {
ssize_t space1 = request.find(" ");
CHECK_GE(space1, 0);
ssize_t space2 = request.find(" ", space1 + 1);
CHECK_GE(space2, 0);
method->setTo(request, 0, space1);
#ifndef ANDROID_DEFAULT_CODE
url->setTo(request, space1 + 1, space2 - space1 - 1);
#else
url->setTo(request, space1 + 1, space2 - space1);
#endif // #ifndef ANDROID_DEFAULT_CODE
}
示例6: validateMediaFormat
bool ARTPSession::validateMediaFormat(size_t index, unsigned *port) const {
AString format;
mDesc->getFormat(index, &format);
ssize_t i = format.find(" ");
if (i < 0) {
return false;
}
++i;
size_t j = i;
while (isdigit(format.c_str()[j])) {
++j;
}
if (format.c_str()[j] != ' ') {
return false;
}
AString portString(format, i, j - i);
char *end;
unsigned long x = strtoul(portString.c_str(), &end, 10);
if (end == portString.c_str() || *end != '\0') {
return false;
}
if (x == 0 || x > 65535) {
return false;
}
*port = x;
return true;
}
示例7: ReloadRecipes
void cBrewingRecipes::ReloadRecipes(void)
{
ClearRecipes();
LOGD("Loading brewing recipes...");
std::ifstream f(BREWING_RECIPE_FILE, std::ios::in);
if (!f.good())
{
LOG("Could not open the brewing recipes file \"%s\". No brewing recipes are available.", BREWING_RECIPE_FILE);
return;
}
unsigned int LineNum = 0;
AString ParsingLine;
while (std::getline(f, ParsingLine))
{
LineNum++;
// Remove comments from the line:
size_t FirstCommentSymbol = ParsingLine.find('#');
if (FirstCommentSymbol != AString::npos)
{
ParsingLine.erase(ParsingLine.begin() += static_cast<long>(FirstCommentSymbol), ParsingLine.end());
}
if (ParsingLine.empty())
{
continue;
}
AddRecipeFromLine(ParsingLine, LineNum);
} // while (getline(ParsingLine))
LOG("Loaded " SIZE_T_FMT " brewing recipes", m_pState->Recipes.size());
}
示例8: splitString
bool splitString(const AString &s, const AString &delimiter, AString *s1, AString *s2) {
ssize_t pos = s.find(delimiter.c_str());
if (pos < 0) {
return false;
}
*s1 = AString(s, 0, pos);
*s2 = AString(s, pos + 1, s.size() - pos - 1);
return true;
}
示例9: AString
// static
status_t M3UParser::parseByteRange(
const AString &line, uint64_t curOffset,
uint64_t *length, uint64_t *offset) {
ssize_t colonPos = line.find(":");
if (colonPos < 0) {
return ERROR_MALFORMED;
}
ssize_t atPos = line.find("@", colonPos + 1);
AString lenStr;
if (atPos < 0) {
lenStr = AString(line, colonPos + 1, line.size() - colonPos - 1);
} else {
lenStr = AString(line, colonPos + 1, atPos - colonPos - 1);
}
lenStr.trim();
const char *s = lenStr.c_str();
char *end;
*length = strtoull(s, &end, 10);
if (s == end || *end != '\0') {
return ERROR_MALFORMED;
}
if (atPos >= 0) {
AString offStr = AString(line, atPos + 1, line.size() - atPos - 1);
offStr.trim();
const char *s = offStr.c_str();
*offset = strtoull(s, &end, 10);
if (s == end || *end != '\0') {
return ERROR_MALFORMED;
}
} else {
*offset = curOffset;
}
return OK;
}
示例10: onSendRequest
void ARTSPConnection::onSendRequest(const sp<AMessage> &msg) {
sp<AMessage> reply;
CHECK(msg->findMessage("reply", &reply));
if (mState != CONNECTED) {
reply->setInt32("result", -ENOTCONN);
reply->post();
return;
}
AString request;
CHECK(msg->findString("request", &request));
// Find the boundary between headers and the body.
ssize_t i = request.find("\r\n\r\n");
CHECK_GE(i, 0);
int32_t cseq = mNextCSeq++;
AString cseqHeader = "CSeq: ";
cseqHeader.append(cseq);
cseqHeader.append("\r\n");
request.insert(cseqHeader, i + 2);
LOGV("%s", request.c_str());
size_t numBytesSent = 0;
while (numBytesSent < request.size()) {
ssize_t n =
send(mSocket, request.c_str() + numBytesSent,
request.size() - numBytesSent, 0);
if (n == 0) {
// Server closed the connection.
LOGE("Server unexpectedly closed the connection.");
reply->setInt32("result", ERROR_IO);
reply->post();
return;
} else if (n < 0) {
if (errno == EINTR) {
continue;
}
LOGE("Error sending rtsp request.");
reply->setInt32("result", -errno);
reply->post();
return;
}
numBytesSent += (size_t)n;
}
mPendingRequests.add(cseq, reply);
}
示例11: ReloadRecipes
void cFurnaceRecipe::ReloadRecipes(void)
{
ClearRecipes();
LOGD("Loading furnace recipes...");
std::ifstream f(FURNACE_RECIPE_FILE, std::ios::in);
if (!f.good())
{
LOG("Could not open the furnace recipes file \"%s\". No furnace recipes are available.", FURNACE_RECIPE_FILE);
return;
}
unsigned int LineNum = 0;
AString ParsingLine;
while (std::getline(f, ParsingLine))
{
LineNum++;
if (ParsingLine.empty())
{
continue;
}
// Remove comments from the line:
size_t FirstCommentSymbol = ParsingLine.find('#');
if ((FirstCommentSymbol != AString::npos) && (FirstCommentSymbol != 0))
{
ParsingLine.erase(ParsingLine.begin() + static_cast<const long>(FirstCommentSymbol), ParsingLine.end());
}
switch (ParsingLine[0])
{
case '#':
{
// Comment
break;
}
case '!':
{
AddFuelFromLine(ParsingLine, LineNum);
break;
}
default:
{
AddRecipeFromLine(ParsingLine, LineNum);
break;
}
} // switch (ParsingLine[0])
} // while (getline(ParsingLine))
LOG("Loaded " SIZE_T_FMT " furnace recipes and " SIZE_T_FMT " fuels", m_pState->Recipes.size(), m_pState->Fuel.size());
}
示例12: isNameEquals
bool AXmlElement::isNameEquals(const AString& nameattr) const
{
size_t pos = nameattr.find('@');
if (AConstant::npos == pos)
return m_Name.equals(nameattr);
else
{
AString name;
AString attr;
nameattr.peek(name, 0, pos);
nameattr.peek(attr, pos);
return (m_Name.equals(name) && m_Attributes.exists(attr));
}
}
示例13: FindFiles
/** 查找指定的文件
@Param 存储文件信息的列表
@Param 用于匹配文件名的字符
@Param 遍历时是否递归
@Param 是否遍历目录
*/
void FZipFilePack::FindFiles( VFileInfoList& fileList,const AString& pattern,
bool bRecurse,bool bDir )
{
VFileInfoList::iterator itr;
VFileInfoList::iterator end = m_FileInfos.end();
// 如果要查找的字符包含目录,则做一个全匹配
bool full_match = (pattern.find('/') != AString::npos ||
pattern.find('\\') != AString::npos );
// 获取关键字的目录
AString directory;
if( full_match )
{
size_t pos1 = pattern.rfind( '/' );
size_t pos2 = pattern.rfind( '\\' );
if( pos1 == AString::npos || ((pos2 != AString::npos) && pos1 < pos2) )
pos1 = pos2;
if( pos1 != AString::npos )
directory = pattern.substr( 0,pos1+1 );
}
// 遍历文件信息
for( itr=m_FileInfos.begin();itr!=end;itr++ )
{
if( ((itr->nCompressedSize != (size_t)-1) ||
(itr->nCompressedSize == (size_t)-1 && bDir)) &&
(bRecurse || itr->sPath == directory) )
{
if( AStringUtil::Match(full_match ? itr->sFileName : itr->sBaseName,pattern) )
fileList.push_back( *itr );
}
}
}
示例14: CreateVerticalStrategyFromString
cPiece::cVerticalStrategyPtr CreateVerticalStrategyFromString(const AString & a_StrategyDesc, bool a_LogWarnings)
{
// Break apart the strategy class, the first parameter before the first pipe char:
auto idxPipe = a_StrategyDesc.find('|');
if (idxPipe == AString::npos)
{
idxPipe = a_StrategyDesc.length();
}
AString StrategyClass = a_StrategyDesc.substr(0, idxPipe);
// Create a strategy class based on the class string:
cPiece::cVerticalStrategyPtr Strategy;
if (NoCaseCompare(StrategyClass, "Fixed") == 0)
{
Strategy = std::make_shared<cVerticalStrategyFixed>();
}
else if (NoCaseCompare(StrategyClass, "Range") == 0)
{
Strategy = std::make_shared<cVerticalStrategyRange>();
}
else if (NoCaseCompare(StrategyClass, "TerrainTop") == 0)
{
Strategy = std::make_shared<cVerticalStrategyTerrainTop>();
}
else if (NoCaseCompare(StrategyClass, "TerrainOrOceanTop") == 0)
{
Strategy = std::make_shared<cVerticalStrategyTerrainOrOceanTop>();
}
else
{
return nullptr;
}
// Initialize the strategy's parameters:
AString Params;
if (idxPipe < a_StrategyDesc.length())
{
Params = a_StrategyDesc.substr(idxPipe + 1);
}
if (!Strategy->InitializeFromString(Params, a_LogWarnings))
{
return nullptr;
}
return Strategy;
}
示例15: AddStyle
void cCompositeChat::AddStyle(AString & a_Style, const AString & a_AddStyle)
{
if (a_AddStyle.empty())
{
return;
}
if (a_AddStyle[0] == '@')
{
size_t idx = a_Style.find('@');
if ((idx != AString::npos) && (idx != a_Style.length()))
{
a_Style.erase(idx, 2);
}
a_Style.append(a_AddStyle);
return;
}
a_Style.append(a_AddStyle);
}