使用char * [] =“something”时如何输出单个字符?

时间:2010-04-29 06:22:25

标签: c++ pointers char

我一直在玩指针以更好地理解它们,我遇到了一些我认为我应该能够做到的事情,但却无法理清。下面的代码工作正常 - 我可以输出“a”,“dog”,“socks”和“裤子” - 但是如果我想从“袜子”输出'o'怎么办?我该怎么做?

char *mars[4] = { "a", "dog", "sock", "pants" };

for ( int counter = 0; counter < 4; counter++ )
{
  cout << mars[ counter ];
}

如果问题在某处得到解答,请原谅我 - 有30多页与C ++指针相关的问题,我花了大约90分钟查看它们,以及阅读各种(内容丰富的)文章,然后才决定提问。

5 个答案:

答案 0 :(得分:7)

mars[i][j]将打印j'字符串的i个字符。

所以mars[2][1]是'o'。

答案 1 :(得分:2)

如前所述,字符串是数组。实际上,这个概念是在std::string - 类(顺便说一下,是表示C ++中的字符串的首选方式)上进行的,它实现了STL-Sequence的所有要求。此外,它实现了array-subscript运算符。这意味着表达式:

mars[i][j]
如果mars被声明为

也会有效

std::vector< std::string > mars;

这是处理这个问题的C ++方法。我知道你这样做是为了学习指针,但我只是想我会添加这些来获取你的信息。此外,在学习C ++中的指针时,您还应该了解iterators,因为它们是generalizations of pointers

答案 2 :(得分:1)

cout << mars[2][1] ;

marschar *的数组,因此要获取您必须索引到char数组中的单个char

答案 3 :(得分:0)

mars[counter]的类型为char *,指向以零结尾的字符串。所以你可以:

for ( int counter = 0; counter < 4; counter++ ) 
{ 
  char * str = mars[ counter ]; 
  size_t len = strlen(str);

  if (len >= 2)
    cout << str[1]; 
} 

答案 4 :(得分:0)

由于其他人提出了简单的方法,请找到一种圆形的方法;)

char *myChar = &mars[ 1 ][0];
int nPosOfCharToLocate = 1;
myChar = myChar + nPosOfCharToLocate;
cout <<*myChar<<endl;