读取一串字母,并截取最后一位字母,然后取得该字母的ASCII码。我试着把读到的字符串最后的字母赋给一个char*变量A
然后再通过强制转换(int)A[0]来得到该字母的ASCII码。但是会有段错误(核心已转储)这个报错。求大神指点
字符串转换为ascii值的函数 https://download.csdn.net/download/jdper/6684625
假设A为你所说的字母,int a=(int)A就行了,(int)为强制转换类型,字母转化过来就是对应的ASCII码了,cout>>a,就可以输出ASCII码了
char*的变量指向的是地址, 如果你的指针, 没有分配一个空间, 而把ascii赋值给没有分配空间的地址, 如果这个地址指向的不是合法地址, 会崩溃是很正常的是, 你的方法不在正确, 为什么要这么用呢
首先要判断是否读到最后一位字符,建议你打印尝试一下,第二如果是,不建议i使用强制转换,可以进行减去字符的加减运算,可以得到你想要的int形,
我们可以用String类的substring(int from,int to)方法去截字符串位置为from到to-1位置的字符
如下;String str="1234:22:23";int i=str.lastIndexOf(":");
搜索
不知是不是这个意思,请看代码:
char str[85];
printf("请输入一个表达式\n");
scanf("%s", str);//中序输入表达式
int len = strlen(str);
printf("字符串最后一位ASCII码为:0x%02X", str[len - 1]);
如果是string类型,那么是这样的代码:
string str;
printf("请输入一个字符串\n");
cin >> str;
int len = str.length();
printf("字符串最后一位ASCII码为:0x%02X", str[len - 1]);
试一下这样转
int * stringtoAsc(string s)
{
int *a = (int *)malloc(sizeof(int)*s.length()+1);
for (size_t i = 0; i < s.length()+1; i++)
{
a[i] = s[i];
cout << s[i]<<' '<<a[i]<<' ';
int2binary(a[i]);
cout << ' ';
printf("%x", a[i]);
cout << endl;
}
cout << endl;
return a;
}
1、段错误是你指针的用法不对
2、以后提问帖代码,光这样问谁知道你代码错在哪
3、 这样可以满足你提的功能
QString str="abcde";
char a[10];
QByteArray b=str.mid(str.length()-1,1).toAscii();
strcpy(a,b.data());
qDebug("%d",a[0]);
你提到“我试着把读到的字符串最后的字母赋给一个char*变量A”,具体代码是如何实现的,按道理来说字符串最后一个字母不能直接赋值给一个char*,如下
char* A;
A = &str[sz];
int a = (int)A[0];
这样就可以得到最后一个字母的ASCII值。