我需要检查std:string是否以“xyz”开头。如何在不搜索整个字符串或使用substr()创建临时字符串的情况下执行此操作。std :: string比较(检查字符串是否以另一个字符串开头)
73
A
回答
139
我会用比较方法:
std::string s("xyzblahblah");
std::string t("xyz")
if (s.compare(0, t.length(), t) == 0)
{
// ok
}
1
我觉得我不完全理解你的问题。它看起来应该是微不足道的:
s[0]=='x' && s[1]=='y' && s[2]=='z'
这只看(最多)前三个字符。一个字符串的概括是未知在编译的时候就需要你用循环来代替上面:
// look for t at the start of s
for (int i=0; i<s.length(); i++)
{
if (s[i]!=t[i])
return false;
}
8
放眼Boost的String Algo库,具有许多有用的功能,如STARTS_WITH,istart_with(不区分大小写),等等。如果你想使用Boost库中的一部分在你的项目,那么你可以使用bcp实用程序只复制所需的文件
11
的方法那可能更多保持标准库的精神将是定义你自己的starts_with算法。
#include <algorithm>
using namespace std;
template<class TContainer>
bool begins_with(const TContainer& input, const TContainer& match)
{
return input.size() >= match.size()
&& equal(match.begin(), match.end(), input.begin());
}
这提供了一个简单的界面,客户端代码和与大多数标准库的容器兼容。
相关问题
- 1. 检查字符串是否以另一个字符串开头?
- 2. 检查一个字符串是否以另一个字符串开头
- 3. 使用“^”来检查字符串是否以另一个字符串开头?
- 4. 检查一个字符串是否以字符'23'开头 - Regex
- 5. 检查字符串是否以字符串开头
- 6. KSH检查字符串是否以子字符串开头
- 7. Python - 检查一个字符串是以“是”还是“否”开头?
- 8. 比较给定字符串开始用另一个字符串
- 9. C - 检查字符串是否是另一个字符串的子字符串
- 10. 检查一组中的字符串是否以另一组字符串开始
- 11. 检查一个字符串是否以http开头使用Javascript
- 12. 检查一个字符串是否以XXXX开头
- 13. 爪哇 - 检查是否字符串在另一个字符串
- 14. 如何检查字符串是否以C中的某个字符串开头?
- 15. 如何检查一个字符串是否以C中的另一个字符串开头?
- 16. 字符串与另一个字符串字符的比较
- 17. 检查字符串以数字开头
- 18. 检查一个字符串是否以列表中的任何字符开头
- 19. PHP检查一个字符串开头#
- 20. 检查字符串是否以欧元/英镑符号开头
- 21. 一个字符串查找是否有另一个字符串
- 22. 检查字符串是否以D/phobos中的子字符串开头?
- 23. 检查字符串是否以Ruby中的X字母开头
- 24. 检查字符串是否以小写字母开头
- 25. 测试一个字符串是否以数字开头
- 26. 对一个字符串进行迭代并与另一个字符串进行比较以检查第一个字符是否在第二个字符中
- 27. 如何检查某个字符串是否在字符串的开头?
- 28. 检查两个字符串是否以相同的字符开头
- 29. 检查一个字符串是否与另一个字符串相似
- 30. 有效检查一个字符串是否包含另一个字符串
那么,我知道如何比较使用C函数的字符串。我的问题是通过C++ STL来实现面向对象的方式。 – jackhab 2009-05-31 11:01:58
这里没有使用C函数。而标准图书馆并不排除你写自己的行为。 – 2009-05-31 11:05:06
如果t比s短,该怎么办? – vidstige 2013-01-22 14:00:58