c++中,元素指向字符串的数组
C++, array which elements point to strings
当我们声明例如
const char* suit[3] = {"Head", "Dia", "Mod"};
这意味着例如suit[0]
存储"H"
的地址。那么为什么当你输入std::cout << suit[0]
时,它会打印"Head"
呢?
因为当调用operator<<(std::ostream&, const char*)
时,标准库假定指针指向以null结尾的字符数组的第一个元素——这里确实是这样:suit[0]
实际上指向数组{'H', 'e', 'a', 'd', ' '}
。
如果你想只得到'H',你必须写:
std::cout << suit[0][0] << std::endl;
,因为如果你只说suit[0]
,你会得到一个指向"Head"的指针,程序会打印所有内容,直到它到达' '
字符。简单指针算术。
一些例子:
std::cout << suit[1] << std::endl; //prints Dia
std::cout << suit[1][0] << std::endl; //prints D
std::cout << suit[2] << std::endl; //prints Mode
相关文章:
- 将C#字符串数组传递给C++
- 如何为 C 型字符串数组编写 getter 和 setter?
- 有没有办法使用 strcpy 将字符串数组复制到另一个字符串或其他数组中?
- 尝试将 c 字符串数组与分隔符连接起来
- 将字符串数组传递给接受常量字符**的函数
- 返回 C++ 中的字符串数组
- 如何从COM模块中的函数返回字符串数组?
- 无法将字符串数组声明为类成员而不是字符 (C++)
- 删除字符串数组
- 如何将字符串数组返回到 java JNI
- 将字符串数组作为函数参数传递
- C++将字符串数组的元素存储到变量中
- 循环访问还包含未使用元素的字符串数组
- 字符串数组上的 sizeof 运算符以 C++ 为单位给出不同的输出
- 乘以字符串/数组和全局数组
- 递归二进制搜索与字符串数组
- 如何初始化一个标准::字符串数组?
- 无法在声明时使用初始值设定项列表初始化常量字符*/字符串数组的向量
- C++字符串数组的动态向量
- 给定一个等长字符串数组