我正在试图弄清楚如何使用这个功能.我在网上找到它,显然它检查你的字符串中是否有空格.所以这对我不起作用.我已经发现我甚至没有进入我需要的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!!");
}
}
}
Run Code Online (Sandbox Code Playgroud)
谁知道我做错了什么?如果您需要我澄清任何事情,请告诉我.
Set*_*gie 12
所有这些都是非常不必要的,只测试一个字符串是否有空格.这就是你所需要的:
#include <ctype.h>
bool hasspace = std::find_if(str.begin(), str.end(), ::isspace) != str.end();
Run Code Online (Sandbox Code Playgroud)
::是范围分辨率运算符,指定它isspace是一个全局函数,而不是类似命名的std::isspace,并且find_if是一个内部函数std::.如果你使用using namespace std;那么你不需要,std::但你仍然需要平原::.
该find_if函数将一个迭代器作为字符串的开头,一个迭代器作为字符串的结尾,一个函数接受一个参数并返回一些可转换为a的值bool.find_if从第一个迭代器迭代到第二个迭代器,将当前项的每个值传递给你给它的函数true,如果函数返回,则find_if返回导致函数返回的迭代器true.如果find_if一直到最后并且函数永远不会返回true,那么它会将一个迭代器返回到范围的末尾,在本例中是str.end().
这意味着如果find_if返回str.end(),它将返回到字符串的末尾而不isspace返回true,这意味着字符串中没有空格字符.因此,你可以测试find_if反对的结果str.end(); 如果它们是unequal(!=),那意味着字符串中有一个空格,并且hasspace是true.不,hasspace是false.