C++;C4244=';:从';std::streamsize';至';无符号短';,数据可能丢失;有解决办法吗? 我对C++很陌生,刚开始学习课堂。我不知道为什么我一直得到这个错误C4244(检查标题)。 我正在使用Visual Studio 2017 如有反馈,将不胜感激

C++;C4244=';:从';std::streamsize';至';无符号短';,数据可能丢失;有解决办法吗? 我对C++很陌生,刚开始学习课堂。我不知道为什么我一直得到这个错误C4244(检查标题)。 我正在使用Visual Studio 2017 如有反馈,将不胜感激,c++,class,type-conversion,warnings,private,C++,Class,Type Conversion,Warnings,Private,//我的程序要求用户输入一个句子 ` #包括 使用名称空间std Const short MAX=132; 班级信息 { 字符句子[MAX]; 短G计数; 公众: 无符号短字符数; void InputData(); void showresult(); }; Int main() { 信息数据; data.InputData(); data.showresult(); 返回0; } 无效信息::InputData()//输入信息的成员函数 { cin.忽略(10,'\n'); cout警告告诉

//我的程序要求用户输入一个句子 `

#包括
使用名称空间std
Const short MAX=132;
班级信息
{
字符句子[MAX];
短G计数;
公众:
无符号短字符数;
void InputData();
void showresult();
};
Int main()
{
信息数据;
data.InputData();
data.showresult();
返回0;
}
无效信息::InputData()//输入信息的成员函数
{
cin.忽略(10,'\n');

cout警告告诉您,您试图存储的值对于您试图放入的容器来说可能太大。
cin.gcount()
返回类型为
std::streamsize
的值。这通常是有符号的64位(或32位)数字。
CharCount
是一个
无符号短字符
,通常为16位

实际上,您正试图将有符号的64位值存储到编译器不满意的无符号16位值中。您还应该将
CharCount
更改为
std::streamsize
类型


或者,正如用户253751所建议的,因为您知道它的尺寸很小(132),您可以直接转换为一个
无符号的short

您不明白吗?
short
小于
streamsize
,因此您可能会在转换过程中丢失数据。注意-这不是一个错误,只是一个警告。编译器试图告诉您“我不确定,但这可能不正确,请检查”.@Yksisarvinen警告如果不被理解,则应将其视为错误:理解它们,修复它们。或者,由于您知道它少于132个字符,您可以简单地强制转换它。@user253751已编辑以包含该警告。Re:“尝试存储过大的值”--不,警告是该值可能太大。编译器不知道实际值是什么,因此无法给出是否合适的意见。@PeteBecker已修复。感谢所有人的输入,按类型转换,格式是否类似于此“static_cast(Object)”并应用于CharCount?
#include <iostream>
using namespace std
Const short MAX = 132;

class information
{
char sentence[MAX];
short gcount;
public:
    unsigned short CharCount;
    void InputData();
    void showresult();
};
Int main()
{
    Information data;
    data.InputData();
    data.showresult();
    return 0;
}

void information::InputData()//member function to enter info
{
    cin.ignore(10, '\n');
    cout << "Enter your sentence " << endl;
    cout << endl;
    cin.getline(sentence, sizeof(sentence));
    CharCount = cin.gcount(); // this is the problem

}

void information::showresult() //show number of characters
{
    cout << " Characters in the sentence:: " << CharCount  << endl; 
    system(“Pause”);
}