Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将字符串的一部分转换为int并返回将创建随机字符_C++ - Fatal编程技术网

C++ 将字符串的一部分转换为int并返回将创建随机字符

C++ 将字符串的一部分转换为int并返回将创建随机字符,c++,C++,我在尝试将时间从12小时格式转换为24小时格式时遇到问题 注意:-这是从一个在线测试网站,并与该网站工作的样板代码填写,所以我只打算张贴我被允许键入程序的一部分 string timeConversion(string s) { /* * Write your code here. */ int hours = ((int) s[0])*10+((int) s[1]); char r[7]; //cout<< sizeof(s

我在尝试将时间从12小时格式转换为24小时格式时遇到问题

注意:-这是从一个在线测试网站,并与该网站工作的样板代码填写,所以我只打算张贴我被允许键入程序的一部分

string timeConversion(string s) {
    /*
     * Write your code here.
     */
     int hours = ((int) s[0])*10+((int) s[1]);
     char r[7];
     //cout<< sizeof(s)<<"\n";
     if(s[8]=='P')
     {
        hours=hours+12;
        r[0]=(char) (hours/10);
        r[1]=(char) (hours%10);
        for (int i=2;i<8;i++)
           {
            r[i]=s[i];
           }
     }else
        {
            for(int i=0;i<8;i++)
            {
                r[i]=s[i];
            }
        
        }  
     return r;
}
现在我自己在另一个编译器中测试第5行(即我将小时部分转换为整数的那一行),出于某种原因,而不是正确地转换其显示的小时数=534


你们能告诉我哪里出了问题以及如何修复吗?

我早些时候发现我的代码出了什么问题。它之所以不工作是因为C++没有将数值字符转换成实际的数值,而是将它转换成对应的ASCII值,它开始于48为“0”,在“9”结束时为57。 语句用于转换字符串中的小时数,反之亦然

字符串->整数

int hours = (((int) s[0])%48)*10+(((int) s[1])%48);

int->string

r[0]=(char) ((hours/10)+48);
r[1]=(char) ((hours%10)+48);

不要越过这道栅栏,你将离开规定的行为区域!(B.Stroustrup)
s[0]
包含字符串中第0个元素的代码点,作为
字符
;虽然
char
s可以被视为数字(代码点毕竟只是数字),但代码点的数字并不等于其对应标志符号表示的数字:
'0'!=0
“1”!=1等。
ch-'0'
将为您提供由数字字符表示的数值(
'0'..'9'
)。
int hours = (((int) s[0])-48)*10+(((int) s[1])-48);
r[0]=(char) ((hours/10)+48);
r[1]=(char) ((hours%10)+48);