C ++错误:从'char *'转换为'int'会失去精度

时间:2016-01-13 21:24:04

标签: c++

我几天前开始学习C ++。

我想使用用户输入设置dog.age

#include <iostream>

using namespace std;

class dog{
    public:
        dog();
        ~dog();
        int getAge();
        void setAge(int a);

    protected:
        int age;
};

dog::dog(){

}

dog::~dog(){

}

int dog::getAge(){
    return age;
}

void dog::setAge(int a){
    age = a;
}

int main(){
    dog myDog;
    char myString[2];
    int age;

    cout<<"How old is the dog? ";
    cin.getline(myString,2,'\n');

    age = (int)myString;
    myDog.setAge(age);
    cout<<"The dog is "<<myDog.getAge()<<" years old!\n";
    return 0;
}

但是我收到了这个错误:

error: cast from ‘char*’ to ‘int’ loses precision [-fpermissive]
  age = (int)myString;`

即使我删除(int),也会失败。

为什么我的程序不会myString成为int

可选:如果我在构建课程时遇到其他问题,请随时告诉我。我想早点养成坏习惯。

1 个答案:

答案 0 :(得分:1)

您不能以这种方式将字符串转换为int。 myString类型为char[],其中广告会转换为char*,然后转换为int

标准库包含一些可以从字符串转换为int的方法。

示例:std::atoi