我正在尝试弄清楚如何使用这个函数。我在网上找到的,显然它会检查你的字符串中是否有空格。所以这对我不起作用。我已经知道我甚至没有进入到我需要的if语句中。
for (i=0;i < marks.length();i++)
{
if (isdigit(marks[i]))
{
floatMARK = 1;
}
else
{
charMARK = 1;
}
}
if (floatMARK == 1)
{
printf("were in.");
for (i=0;i < marks.length();i++)
{
if (isspace(marks[i]))
{
multiMARK = 1;
printf("WE HAVE A SPACE!!");
}
}
}有人知道我做错了什么吗?如果你需要我澄清什么,请告诉我。
发布于 2012-01-23 09:54:55
所有这些都是非常不必要的,只是测试字符串中是否有空格。这就是你所需要的:
#include <ctype.h>
bool hasspace = std::find_if(str.begin(), str.end(), ::isspace) != str.end();::是作用域解析操作符,指定isspace是全局函数,而不是名称类似的std::isspace,而find_if是std::内部的函数。如果你使用using namespace std;,那么你不需要std::,但是你仍然需要普通的::。
find_if函数接受字符串开头的迭代器,字符串末尾的迭代器,以及接受参数并返回一些可转换为bool的值的函数。find_if从第一个迭代器迭代到第二个迭代器,将当前项的每个值传递给您指定的函数,如果函数返回true,则find_if返回导致函数返回true的迭代器。如果find_if遍历到末尾,而函数从未返回true,那么它将返回一个到范围末尾的迭代器,在本例中是str.end()。
这意味着如果find_if返回str.end(),它将到达字符串的末尾,而不是isspace返回true,这意味着字符串中没有空格字符。因此,您可以针对str.end()测试find_if的结果;如果它们不相等(!=),这意味着字符串中有一个空格,而hasspace为true。否则,hasspace就是false。
发布于 2012-01-23 12:33:02
这里是另一种方式,如果上面的版本看起来很奇怪,或者它超出了您的知识
if(marks[i] == ' ') {
cout<<"Space found!";
}https://stackoverflow.com/questions/8966451
复制相似问题