- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试获取单词的最后一个字母,以比较这些字母行是否在 vector 中。所以我想先检查最后 2 个,然后是最后 3 个和最后 4 个字母。一旦找到一个,它就应该分手,并返回 false。否则它应该检查剩下的所有内容,并在没有任何依据的情况下返回 true。
这是我的功能:
bool isIt(wstring word, vector <wstring> vec) {
int ct = 2;
while (ct < 5) {
word = word.substr(word.length() - ct, word.length()-1);
//wcout << word << endl;
if (find(vec.begin(), vec.end(), word) != vec.end()) {
//wcout << "false" << endl;
ct = 5; return false;
} else {ct++; wcout << ct << endl; continue; }
} return true;}
函数是这样调用的:
if( word >3){ isIt(word, vec); }
当第一次检查失败时,我收到此错误消息:
terminate called after throwing an instance of 'std::out_of_range' what(): basic_string::substr
我不明白,为什么它不继续,一旦它在 else 部分。我希望我的描述足够好。BR
最佳答案
错误在这里,你修改word
的地方。
word = word.substr(word.length() - ct, word.length()-1);
如果 word
是 "ABCD"
进入此函数,则第一次通过循环时,此计算结果为:
word = std::string("ABCD").substr( 2, 3 );
第二次通过你的循环,它的计算结果为:
word = std::string("CD").substr( size_t(-1), 1 );
关于c++为什么这个错误 "basic_string::substr"并打破循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15600964/
ninja (版本:1.9.0)输出: mergetree_test.cpp:(.text+0x19f): undefined reference to `DB::executeQuery(std::
嘿,我正在制作“制作你自己的冒险游戏!”现在除了必须通过漏洞游戏之外,我想制作一个作弊代码系统,现在我试图声明一个字符串女巫等于超过 6 个单词我不明白问题是什么我只用了两个单词并且没有错误但是当我用
在 MacOS X 10.10 CLang 中: typedef basic_string, allocator > string; typedef basic_string, allocator >
来自以下内容 Can I turn unsigned char into char and vice versa? 似乎转换 basic_string到 basic_string (即 std::st
我这样定义一个字符串对象: string test; 我想知道STL是怎么实现string的,发现string是basic_string,像这样: typedef basic_string st
好吧,我有这个代码: #include #include "Stack.h" #include using namespace std; int main(int argc, char* argv
当我编译以下 MWE 时出现上述错误在 GCC 上 #include void frobnigate( const std::string& str ) { std::string::con
我正在尝试编译 QtWebApp使用 Qt5.5.1 到最新的 RPI4-Raspbian Buster,我遇到了莫名其妙的 GLIBCXX 未解析符号 什么有效:QtWebApp 使用在 Raspb
尽管以下代码可以在 Linux 上编译,但我无法在 Windows 上编译它: boost::filesystem::path defaultSaveFilePath( base_directory
我在函数的代码行下面运行 string internalPath(os.str()); m_tags.insert(make_pair(internalPath, tagConfig )); e
如何把所有的\都改成\\? 我想创建地址来处理文件: #include #include #include using namespace std; int main() { strin
我目前正在为一个类项目工作,其中我必须在 C++ 中实现布谷鸟哈希。问题是,C++ 和我从来都不是 friend ,而且我认为我们永远不会... 具体的问题是,我无法在已经存在的对象上设置指针。当我这
你能告诉我这段代码有什么问题吗?关于如何修复的任何想法? JNIEXPORT jstring JNICALL Java_COM_DEMO_TEST_SEND (JNIEnv *env, jclass
所以我是编程新手,这是大学工程类(class)的一部分。我决定找点乐子,在课外写点东西。我正在尝试用 C++ 编写一个程序,允许用户输入 3 个矩形棱柱的长度、宽度和高度值,程序将使用这 3 个值来计
我将重新发布我今天早些时候提交的问题,但现在我引用一个具体示例来回应我收到的反馈。可以在here中找到原始问题(请注意,这不是家庭作业): 我只是试图确定C++是否使不可能对basic_string对
当我尝试编译以下代码时: #include using namespace std; typedef std::basic_string foostring; foostring foo = "fo
我正在评估使用 basic_string 模板来实现一个类似字符串的对象,以便使用外部内存管理器进行分配。该内存管理器保持已分配内存的最大大小和当前大小(允许当前大小增加到最大大小)。为了避免冗余,我
我有一个函数,ModuleManager::tick(),代码如下: void ModuleManager::tick() { auto now = std::chrono::steady_clock
我正在完成自定义字符串类的开发。当然,它的目的是等同于 basic_string,并为其预期目的定制了内部存储。我正在寻找一种测试工具,它可以按照 C++ 标准进行测试。我已经看到 libstdc++
在浏览 C++14/C++1y (n3690) 草案时,我注意到在第 21.7 节中引入了 basic_string 文字后缀: inline namespace literals { inline
我是一名优秀的程序员,十分优秀!