在C ++中从1而不是0计算字符串

时间:2019-02-08 22:06:57

标签: c++

您知道在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;
}

3 个答案:

答案 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)

正如其他人所说,简单的答案实际上就是接受您从零开始-但是,对于实际的解决方案,您可以使用并使用带有参数'1'的索引适配器。

norm()