|  | 
 
| 
求助各位大佬
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册   第十五行的数据类型错误应该怎么改啊? 题目:写一个程序,提示用户输入一个整型数,然后输出这个整型数的每一位数字,数字之间插一个空格,例如,当输入是12345时,输出为:1 2 3 4 5
 
 复制代码#include<iostream>
#include<string>
#include<math.h>
using namespace std;
int main()
{
        int t,i,a,b,y,s;
        string x;
        cout << "请输入一个整型数:" << endl;
        cin >> x;
        t = x.length(), a = 0,b=0,s=0;
        for (i = t-1; i >=0; i--)
        {
                y = pow(10, i);
                a = int((x-s) / y);
                b = a * y;
                cout << a << " ";
                s = s + b;
        }
        return 0;
}
系统示错:严重性        代码        说明        项目        文件        行        禁止显示状态
 错误        C2676        二进制“-”:“std::string”不定义该运算符或到预定义运算符可接收的类型的转换        Practice4        C:\Users\x\source\repos\Practice4\Practice4\2.4.cpp        15
 
 
根据错误提示,第十五行出现了数据类型错误。问题出在将字符串类型的变量 x  转换为整型变量 s  上。
 
在C++中,无法直接将字符串类型转换为整型类型。你可以使用 std::stoi()  函数将字符串转换为整型。
 
修改第十五行的代码如下: 
这样就能将输入的字符串转换为整型,继续执行后面的逻辑。
 
另外,你也需要包含头文件 <string>  来使用 std::stoi()  函数。所以你的程序应该像下面这样修改:
 复制代码#include<iostream>#include<string>#include<math.h>using namespace std;int main() {    int t, i, a, b, y, s;    string x;    cout << "请输入一个整型数:" << endl;    cin >> x;    t = x.length();    a = 0;    b = 0;    s = std::stoi(x);    for (i = t - 1; i >= 0; i--) {        y = pow(10, i);        a = int((s) / y);        b = a * y;        cout << a << " ";        s = s - b;    }    return 0;}
这样应该就可以正确执行并输出每一位数字了。如果还有其他问题,请随时提问。
球一个最佳答案谢谢啦!这对我非常重要!    | 
 |