【发布时间】:2017-08-28 02:53:03
【问题描述】:
我想在另一个字符串中找到一个给定的字符串。先前计算已知的可能起始位置。示例:
int main()
{
std::string input("Foo Bar Hash Bang");
std::string keyword("Bar");
const char* inputStart = input.c_str() + 4; // at 'B'
std::cout << "memcmp=" << std::memcmp(inputStart, keyword.c_str(), keyword.length()) << "\n";
std::cout << "compare=" << input.compare(4, keyword.length(), keyword) << "\n";
return 0;
}
两者是等价的吗?如果关键字长度从起始位置超过输入长度,则与memcmp 的比较仍然是正确的。 strncmp 是更安全的方法吗?
【问题讨论】:
-
为什么不用std::string提供的find()方法呢?
-
@Oz。表现。那时我已经知道可能的关键字的位置和长度。使用 find() 我必须为整个输入字符串上的每个关键字调用 find 。输入字符串可能根本没有关键字。