- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想检查一个 wstring 是否只包含空格(准确地说:“\t\r\n”)。我找到了几种使用方法 find_last_not_of()
的解决方案。
关于这个方法我有两个问题:
当我知道在 wstring 将包含非空白字符的情况下,这些字符将位于字符串的开头,如果我使用 find_first_not_of 不是更好吗()
因为它一找到东西就返回?
这两种方法的复杂度都是 O(n) 还是我错了?
我知道网上有很多关于这些方法的信息,但我发现了一些关于这个主题的矛盾陈述。
最佳答案
std::basic_string::find_last_not_of
的实现方式不是规范的一部分;因此我们不能说这些字符是按自然顺序查找还是以相反顺序查找。
因此,
让我们看看 libstdc++'s implementation of std::basic_string::find_last_not_of
(basic_string.tcc):
1317 template<typename _CharT, typename _Traits, typename _Alloc>
1318 typename basic_string<_CharT, _Traits, _Alloc>::size_type
1319 basic_string<_CharT, _Traits, _Alloc>::
1320 find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const
1321 {
1322 __glibcxx_requires_string_len(__s, __n);
1323 size_type __size = this->size();
1324 if (__size)
1325 {
1326 if (--__size > __pos)
1327 __size = __pos;
1328 do
1329 {
1330 if (!traits_type::find(__s, __n, _M_data()[__size]))
1331 return __size;
1332 }
1333 while (__size--);
1334 }
1335 return npos;
1336 }
正如人们可能猜到的那样,字符串是向后查找的。在您的特定情况下,std::basic_string::find_first_not_of
应该是可行的方法。
关于c++ - 字符串中只有空格 find_first_not_of() vs find_last_not_of(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33823457/
我是一名 C++ 初学者,我对这个感到困惑,我们将不胜感激。 #include #include using namespace std; int main() { string str;
我有一个 std::string,我想找到第一个字符的位置: 不同于以下所有字符:' '、'\n' 和 '\t'。 比我指示的位置低。 因此,例如,如果我有以下 string 和位置: string
是否有一个 C 函数可以执行等效于 find_first_not_of 的操作,接收要搜索的字符串和一组字符,然后返回字符串中不属于该集合的第一个字符? 最佳答案 strspn函数将使您完成大部分工作
error C2668: 'std::basic_string,std::allocator<:wchar_t>>::find_first_not_of' : ambiguous call to
std::basic_string类模板有成员函数find_first_of 和find_first_not_of。 然而,header 只包含一个通用的 find_first_of。 问题1:是缺席
我想检查一个 wstring 是否只包含空格(准确地说:“\t\r\n”)。我找到了几种使用方法 find_last_not_of() 的解决方案。 关于这个方法我有两个问题: 当我知道在 wstri
#include #include int main(void) { printf("%u\n", std::string("\n").find_first_not_of(" \t\n\v
我正在尝试创建一个类似于 std::string 的自定义字符串类。 而且我在实现“find_first_not_of”时遇到了麻烦。 这是我的测试代码 #include class String
Java 中是否有与 C++ 的“std::string::find_first_not of”等效的东西? 我有: std::string path = "some path"; std::stri
我知道这个问题经常出现,但我找不到一段适合我的代码。 我正在尝试使用字符串库中的 find_first_not_of 和 find_last_not_of 方法去除传入字符串中的所有标点符号: //
IndexOf、IndexOfAny 和 LastIndexOf、LastIndexOfAny 似乎不做这些(或者他们可能做)。我正在寻找 std::string 的 find_first_not_o
我们尝试清理我们的项目并删除所有警告。我收到这条线的警告: if(line.find_first_not_of('\n\t ') != string::npos) { warning C4305: '
我是一名优秀的程序员,十分优秀!