您知道在C ++中如何从1开始而不是从0开始计算字符串吗?例如,xyz在迭代0,1,2 ..上,但我需要它们在1,2,3上。我知道你可以把cout << i + 1;但是还有其他方法可以用strlen(s + 1)做到这一点吗?
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char s[100];
cin.getline(s, 99);
int n = strlen(s);
for (int i = 0; i < n; ++i)
cout<<i<<": "<<s[i]<<"\n";
return 0;
}
答案 0 :(得分:0)
i + 1是必经之路。另一种方法是从1开始循环,然后访问元素i-1处的数组,但这有点愚蠢:
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char s[100];
cin.getline(s, 99);
int n = strlen(s);
for (int i = 1; i <= n; ++i) // i = 1 not 0
cout<<i<<": "<<s[i-1]<<"\n";
return 0;
}
答案 1 :(得分:0)
在C ++中,您不应使用C字符串。而是使用std :: string:
#include <iostream>
#include <string>
int main()
{
std::string s;
std::getline(std::cin, s);
for (int i = 0; i < s.length(); ++i)
std::cout << i + 1 << ": " << s[i] << '\n' ;
return 0;
}
答案 2 :(得分:0)
正如其他人所说,简单的答案实际上就是接受您从零开始-但是,对于实际的解决方案,您可以使用boost-range并使用带有参数'1'的索引适配器。
norm()