基于循环的范围,使用指向字符串的指针

时间:2017-12-15 14:20:40

标签: c++ c++11

在新的C ++标准C ++ 11中,可以使用基于范围的for循环来处理字符串的每个字符。

#include<iostream>
#include<string>

int main()
{
    std::string s1 = "this is an example";
    for (char &c:s1)
        //do any operation
        std::cout<<c;
    return 0;
}

如何在基于范围的char &c:s1循环中使用指针来代替引用for?我想做char *p指向s1的事情。

1 个答案:

答案 0 :(得分:7)

基于范围的for循环不会给你一个指针。但是,您可以制作一个:

for (char &c : s) {
    char *p = &c;
}

或者您可以通过常规循环自行完成:

// Note: Requires C++17, where s.data() is relaxed to a char* type.
for (char *p = s.data(), *e = p + s.size(); p != e; p++) {
}

// Pre-C++17 version.
for (char *p = &s[0], *e = p + s.size(); p != e; p++) {
}