C++ 什么是';s[i]和#x27;在下面的代码中是什么意思?
我想要第一个字符的ascii值,但是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; }
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";
}