本文整理汇总了C++中StringPiece::startsWith方法的典型用法代码示例。如果您正苦于以下问题:C++ StringPiece::startsWith方法的具体用法?C++ StringPiece::startsWith怎么用?C++ StringPiece::startsWith使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类StringPiece
的用法示例。
在下文中一共展示了StringPiece::startsWith方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: parseMessage
void parseMessage(StringPiece msg, size_t* threadID, size_t* messageIndex) {
// Validate and strip off the message prefix and suffix
constexpr StringPiece prefix{"thread "};
if (!msg.startsWith(prefix)) {
throw std::runtime_error("bad message prefix");
}
msg.advance(prefix.size());
if (!msg.endsWith(kMsgSuffix)) {
throw std::runtime_error("bad message suffix");
}
msg.subtract(kMsgSuffix.size());
// Parse then strip off the thread index
auto threadIDEnd = msg.find(' ');
if (threadIDEnd == StringPiece::npos) {
throw std::runtime_error("no middle found");
}
*threadID = folly::to<size_t>(msg.subpiece(0, threadIDEnd));
msg.advance(threadIDEnd);
// Validate that the middle of the message is what we expect,
// then strip it off
constexpr StringPiece middle{" message "};
if (!msg.startsWith(middle)) {
throw std::runtime_error("bad message middle");
}
msg.advance(middle.size());
// Parse the message index
*messageIndex = folly::to<size_t>(msg);
}
示例2:
TEST(StringPiece, PrefixEmpty) {
StringPiece a;
EXPECT_TRUE(a.startsWith(""));
EXPECT_FALSE(a.startsWith("a"));
EXPECT_FALSE(a.startsWith('a'));
EXPECT_TRUE(a.removePrefix(""));
EXPECT_EQ("", a);
EXPECT_FALSE(a.removePrefix("a"));
EXPECT_EQ("", a);
EXPECT_FALSE(a.removePrefix('a'));
EXPECT_EQ("", a);
}
示例3: getXlogCategoryNameForFile
std::string getXlogCategoryNameForFile(StringPiece filename) {
// Buck mangles the directory layout for header files. Rather than including
// them from their original location, it moves them into deep directories
// inside buck-out, and includes them from there.
//
// If this path looks like a buck header directory, try to strip off the
// buck-specific portion.
if (filename.startsWith("buck-out/")) {
filename = stripBuckOutPrefix(filename);
}
std::string categoryName = filename.str();
// Translate slashes to dots, to turn the directory layout into
// a category hierarchy.
size_t lastDot = std::string::npos;
for (size_t n = 0; n < categoryName.size(); ++n) {
if (categoryName[n] == '/') {
categoryName[n] = '.';
lastDot = std::string::npos;
} else if (categoryName[n] == '.') {
lastDot = n;
}
}
// Strip off the filename extension, if one was present.
if (lastDot != std::string::npos) {
categoryName.resize(lastDot);
}
return categoryName;
}