在新的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
的事情。
答案 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++) {
}