C++字符串转换ASCII的问题 10C

读取一串字母,并截取最后一位字母,然后取得该字母的ASCII码。我试着把读到的字符串最后的字母赋给一个char*变量A
然后再通过强制转换(int)A[0]来得到该字母的ASCII码。但是会有段错误(核心已转储)这个报错。求大神指点

10个回答

字符串转换为ascii值的函数 https://download.csdn.net/download/jdper/6684625

假设A为你所说的字母,int a=(int)A就行了,(int)为强制转换类型,字母转化过来就是对应的ASCII码了,cout>>a,就可以输出ASCII码了

phenix2009
白色一大坨 回复Desol: 老兄,我弄好了你看一下代码
大约 2 年之前 回复
Desol
Desol 我是cin一个字符串然后截取它的最后一位,截取到的这个字母依然是string类型的,可是强制转换不是只能用于char类型的字符码?
大约 2 年之前 回复

你提到“我试着把读到的字符串最后的字母赋给一个char*变量A”,具体代码是如何实现的,按道理来说字符串最后一个字母不能直接赋值给一个char*,如下
char* A;
A = &str[sz];
int a = (int)A[0];
这样就可以得到最后一个字母的ASCII值。

我们可以用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]);

char*的变量指向的是地址, 如果你的指针, 没有分配一个空间, 而把ascii赋值给没有分配空间的地址, 如果这个地址指向的不是合法地址, 会崩溃是很正常的是, 你的方法不在正确, 为什么要这么用呢

首先要判断是否读到最后一位字符,建议你打印尝试一下,第二如果是,不建议i使用强制转换,可以进行减去字符的加减运算,可以得到你想要的int形,

如果是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]);

qq_38319117
_肆 抱歉用QT写的,不知道你用的啥编译软件,VS的话可以用T2A()函数把CString转成char*
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问