- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试让这个函数分割一个字符串,然后在不带空格且全部小写的情况下返回它。为此,我试图找到一个 ""
来查看字符串 "The Time Traveler (for so it would be convenient to speak him)"
, 包含一个空格。
代码如下,将上面的字符串传入这个函数。它总是返回 string::npos
。对这个问题有什么想法吗?
string chopstring(string tocut){
string totoken = "";
int start = 0;
while(tocut[0] == ' ' || tocut[0] == 10 || tocut[0 == 13]){
tocut.erase(0);
}
int finish = 0;
finish = tocut.find(" ", start);
if (finish == string::npos){
cout << "NPOS!" << endl;
}
for (int i = start; i < finish; i++){
totoken += tocut[i];
}
tocut.erase(start, finish);
return tokenize(totoken);
}
最佳答案
tocut.erase(0)
正在删除所有 tocut
。参数是要删除的第一个字符,默认长度是“everything”。
tocut[0 == 13]
应该是 tocut[0] == 13
。这些是非常不同的说法。另外,请比较字符值 ('\t'
) 而不是整数。顺便说一句,这与前面的结合是您的实际问题:tocut[0 == 13]
变为 tocut[false]
,即 tocut[0]
,这是 true
。所以循环一直运行直到 tocut
为空,这是立即的(因为你在第一次运行时过于热心地删除它)。
上述两个错误的最终结果是,当您到达find
语句时,tocut
是空字符串,不包含空格字符。继续……
您可以使用 substr
函数而不是循环来从 tocut
迁移到 totoken
。
你的最后一行 tocut.erase(start, finish)
没有做任何有用的事情,因为 tocut
是按值传递的,你在那之后立即返回。
关于C++ std::string::find 总是返回 npos?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9423729/
我想使用 -1 来表示尚未计算的大小: std::vector sizes(nResults, -1); 我想知道为什么没有更具表现力的方式: std::vector sizes(nResults,
您好,我目前是一年级学生,仍在学习 R 在线类(class),我收到一条错误消息:“ans[npos] <- rep(no, length.out = len)[npos] 中的错误:替换的长度为零另
我正在对一个字符串进行一系列搜索,并且在该行的某处会遗漏一个字符串,并且我的一组搜索应该会失败。 我原以为一旦位置达到 std::string::npos 它就会留在那里,但事实并非如此。将 std:
在自定义类的自定义 find() 方法返回自定义数据结构中元素的索引位置的场景中,有没有比返回 string::npos 更优雅的东西? find() 方法的返回类型是size_t。所以我需要它的类型
我是 C++ 的新手,刚从 Java 转过来,对此感到疑惑: pos = result.find(remove[i]); if (pos == string::npo
我正在阅读一本关于 C++ 的书,它只是介绍了如何使用 string::npos 检查字符串中是否存在字符位置。不过,我不明白这种机制怎么可能知道我指的是哪个字符串!此特定代码正在计算子字符串的出现次
这个问题在这里已经有了答案: What does string::npos mean in this code? (12 个答案) 关闭 9 年前。 下面的语句是什么意思? string s
以下代码片段中的短语 std::string::npos 是什么意思? found = str.find(str2); if (found != std::string::npos) std:
我的问题基本上是,每当我使用 Visual Studio(Windows 10 计算机上的 2015 社区版)进行调试时,当我尝试将鼠标悬停在变量上或查看调试 View 的本地或自动部分中的变量时,我
我是一名初学者程序员,如果要了解代码及其工作原理,我会尽力了解这一部分。 所以这是代码: #include #include //C++ Strings Library using namesp
我的代码计算字符串 temp 中的空格,效果很好。在代码的后面,我有一个类似的循环,但没有按预期结束。 根据我的调试和一些研究,我确定 while 循环没有在应该停止的时候停止第二次,因此抛出异常(s
std::string.npos 曾经有效吗? (与正确的 std::string::npos 相反。) 我在我正在处理的一个旧项目中经常看到它,它不能用 VS2010 编译。 它是前标准时代的东西吗
我编写了一个程序,使用 find_last_of 方法在字符串中查找字符。 // ... unsigned found; found = name.find_last_of(character); i
我正在尝试让这个函数分割一个字符串,然后在不带空格且全部小写的情况下返回它。为此,我试图找到一个 "" 来查看字符串 "The Time Traveler (for so it would be co
标题相对不言自明。我认识到与其他答案的相似性,但所有这些都有不同的运算符安排(因此有不同的转换规则)。所以我需要一个可以澄清这个特殊情况的答案。 如果有人能指出解释这一点的标准部分,我会很乐意投票并接
我收到一个错误: error: comparison of constant 18446744073709551614 with expression of type 'unsigned in
这个问题在这里已经有了答案: Why is (18446744073709551615 == -1) true? (4 个答案) 关闭 5 年前。 在构造函数中: CSVBMFBlockModelR
#include #include #include #include using namespace std; int main(int argc, char* argv[]) { ifst
请查看下面的代码片段,特别是第一个“else if”语句。我希望用户能够执行此操作: 加载文件名 所以我想检查“load”是否在字符串中,并尝试打开“load”之后的任何内容。然而,string::n
如果std::size_type的 std::string是默认分配器的, 21.3.1 Class template basic_string typedef typename allocator_
我是一名优秀的程序员,十分优秀!