首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在c++中使用isspace函数?

如何在c++中使用isspace函数?
EN

Stack Overflow用户
提问于 2012-01-23 09:50:47
回答 2查看 8.1K关注 0票数 4

我正在尝试弄清楚如何使用这个函数。我在网上找到的,显然它会检查你的字符串中是否有空格。所以这对我不起作用。我已经知道我甚至没有进入到我需要的if语句中。

代码语言:javascript
复制
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!!");
        }
    }

}

有人知道我做错了什么吗?如果你需要我澄清什么,请告诉我。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-23 09:54:55

所有这些都是非常不必要的,只是测试字符串中是否有空格。这就是你所需要的:

代码语言:javascript
复制
#include <ctype.h>

bool hasspace = std::find_if(str.begin(), str.end(), ::isspace) != str.end();

::是作用域解析操作符,指定isspace是全局函数,而不是名称类似的std::isspace,而find_ifstd::内部的函数。如果你使用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的结果;如果它们不相等(!=),这意味着字符串中有一个空格,而hasspacetrue。否则,hasspace就是false

票数 14
EN

Stack Overflow用户

发布于 2012-01-23 12:33:02

这里是另一种方式,如果上面的版本看起来很奇怪,或者它超出了您的知识

代码语言:javascript
复制
if(marks[i] == ' ') {
cout<<"Space found!";
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8966451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档