Desol
Desol
采纳率50%
2018-05-28 12:37 阅读 5.1k

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

10

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

10条回答 默认 最新

  • qq_29310257 诱惑力sunny 2018-05-28 12:50

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

    点赞 1 评论 复制链接分享
  • qq_42217201 浮生%未歇 2018-05-28 12:52

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

    点赞 1 评论 复制链接分享
  • laomig laomig 2018-05-28 15:24

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

    点赞 1 评论 复制链接分享
  • weixin_40672179 weixin_40672179 2018-05-28 15:29

    我们可以用String类的substring(int from,int to)方法去截字符串位置为from到to-1位置的字符

    如下;String str="1234:22:23";int i=str.lastIndexOf(":");
    搜索

    点赞 1 评论 复制链接分享
  • phenix2009 白色一大坨 2018-05-29 01:55

    不知是不是这个意思,请看代码:

        char str[85];
        printf("请输入一个表达式\n");
        scanf("%s", str);//中序输入表达式 
        int len = strlen(str);
        printf("字符串最后一位ASCII码为:0x%02X", str[len - 1]);
    
    点赞 1 评论 复制链接分享
  • u013030738 u013030738 2018-05-28 13:22

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

    点赞 评论 复制链接分享
  • yy13991731558 yy13991731558 2018-05-28 14:22

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

    点赞 评论 复制链接分享
  • phenix2009 白色一大坨 2018-05-29 02:07

    如果是string类型,那么是这样的代码:

        string str;
        printf("请输入一个字符串\n");
        cin >> str;
        int len = str.length();
        printf("字符串最后一位ASCII码为:0x%02X", str[len - 1]);
    
    点赞 评论 复制链接分享
  • LOCKERC Ltolight 2018-05-30 02:32

    试一下这样转
    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;  
    

    }

    点赞 评论 复制链接分享
  • qq_38319117 _肆 2018-06-08 06:08

    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]);

    点赞 评论 复制链接分享

相关推荐