#include <iostream> #include <string> int main() { std::string str = "abcdef"; std::size_t i = 1; std::cout << str[i] << std::endl; std::cout << &str[i] << std::endl; return 0; }
において、 std::cout << &str[i] << std::endl;の&str[i] はアドレスを扱うと思っていたのですが、Cでは&str[i] はアドレスを扱うのにC++では&str[i] はアドレスではなく文字や文字列を扱うのでしょうか?
ちなみに、Cのように以下のプログラムのようにC++で一文字だけ扱うように書くにはどう書けばいいのでしょうか?
char* p, * q; int ch; ch = *q;
また、こちらのプログラムは実行してもエラーが起きるのですが、何が原因なのでしょうか?
#include <iostream> #include <string> int main() { std::string str = "abcdef"; std::size_t i = 1; std::cout << *(str + i) << std::endl; std::cout << (str + i) << std::endl; std::cout << &*(str + i) << std::endl; return 0; }