c++ - C++ 字符串类可以进行指针运算吗?

标签 c++ arrays class string pointer-arithmetic

在用 C 编写了一些程序后,我决定直接使用 C++。起初,我对字符串类的存在以及能够将字符串视为完整单元而不是字符数组感到满意。但我很快发现,C 风格的字符串具有让程序逐个字符地移动它的优势,使用指针运算,并执行所需的逻辑操作。

我现在发现自己处于需要这样做的情况,但编译器告诉我它无法从类型字符串转换为 C 风格字符串。所以我想知道,有没有一种方法可以使用指针算法来引用单个字符,或者将参数作为第一个字符的地址传递给函数,同时仍然使用字符串类,而不必创建字符数组,或者我只是想有我的蛋糕也吃吗?

最佳答案

字符串字符可以通过索引、指针和迭代器访问。

如果你想使用迭代器,你可以创建一个函数来检查字符串中是否有空格:

bool spacecheck(const string& s)
{
    string::const_iterator iter = s.begin();
    while(iter != s.end()){
        if (isspace(*iter))
            return true;
        else
            ++iter;
    }
}

在函数的开头,我使用 .begin() 函数将迭代器初始化为字符串 s 的开头,在本例中返回一个指向字符串中第一个字符的迭代器。在while函数中,条件是iter != s.end()。在这种情况下,end() 返回引用字符串最后一个字符之后的元素的迭代器。在主体中,(*iter),即 iter 指向的值,被发送到函数 isspace(),该函数检查字符是否为空格。如果失败,则 iter 递增,使 iter 指向字符串的下一个元素。

我自己正在学习 C++,通过编写所有这些东西,它帮助我自己理解了一些。如果您觉得这一切都非常简单,我希望我没有冒犯您,我只是想简明扼要。

我目前正在学习 Accelerated c++,我怎么推荐都不为过!

关于c++ - C++ 字符串类可以进行指针运算吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5130020/

相关文章:

c++ - 我可以通过返回构造函数直接返回对象吗?

Javascript - 动态转换js包括数组

python 使用装饰器向方法添加属性

c++ - 在非指针变量和类成员上放置 new

c++ - QT 设计器中的子类化小部件

c++ - 我应该始终对 OpenGL 中的所有纹理使用 GL_ARGB 格式吗?

android - VS2015跨平台Android和C++

c - 将二维数组作为指针传递,gcc 警告不兼容的指针类型

c++ - 如何在成员初始化器列表中初始化数组

c++在该类中声明该类的变量