C++ 什么是';s[i]和#x27;在下面的代码中是什么意思?

C++ 什么是';s[i]和#x27;在下面的代码中是什么意思?,c++,string,C++,String,我想要第一个字符的ascii值,但是s[1]给出了其他值 #include<iostream> #include<string> using namespace std; int main() { string s; cin>>s; cout<<'s[1]'<<endl;//what will`'s[i]' print as it is not giving ascii! return 0; }

我想要第一个字符的ascii值,但是
s[1]
给出了其他值

#include<iostream>
#include<string>

using namespace std;

int main()
{
    string s;
    cin>>s;

    cout<<'s[1]'<<endl;//what will`'s[i]' print as it is not giving ascii!

    return 0;
}
#包括
#包括
使用名称空间std;
int main()
{
字符串s;
cin>>s;
可能你不想找的是:
  • “s[1]”
    是一个多字节字符,肯定不是您要找的字符
  • “s[1]”
    是一个字符串,包含4个字符,后跟空字符,这也不是您要查找的字符
  • s[1]
    是字符串中的第二个字符,这也不是您要查找的字符
  • 您要找的是:
    intmain(){
    字符串s;
    cin>>s;
    
    std::cout不是应该是
    s[0]
    的第一个字符吗?为什么不仅仅是
    static\u cast(s[0])
    的可能重复?
    重新解释\u cast
    太“强”在这种情况下,我相信。从c++11开始,允许对整型使用
    重新解释转换
    。但由于重新解释转换应该是“重新解释不可靠的位模式”和“不编译到任何CPU指令”,因此将整数值转换为更大类型的结果并不是人们所期望的(像int一样访问char将导致实际读取从给定char开始的四个char;我认为这就是为什么c++11之前的编译器没有处理这些情况)并且应该使用静态转换。
    int main() {
        string s;
        cin >> s;
        std::cout << static_cast<int>(s[0]) << "\n";
    }