我正在试图弄清楚如何使用这个功能。我在网上找到它,显然它检查你的字符串中是否有空格。所以这对我不起作用。我已经发现我甚至没有进入我需要的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!!");
}
}
}
任何人都知道我做错了什么?如果您需要我澄清任何事情,请告诉我。
答案 0 :(得分:12)
如果一个字符串中有空格,那么只需要测试一下就没有必要了。这就是你所需要的:
#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
,这意味着字符串中没有空格字符。因此,您可以针对find_if
测试str.end()
的结果;如果它们不相等(!=
),则表示字符串中有空格,hasspace
为true
。否则,hasspace
为false
。
答案 1 :(得分:0)
这是另一种方式,如果上述版本看起来很奇怪,或者它超出了你的知识
if(marks[i] == ' ') {
cout<<"Space found!";
}