C ++ C4244 =':从'std :: streamsize'转换为'unsigned short',可能丢失数据;有解决方案吗?

问题描述 投票:0回答:1

我对C ++相当陌生,我刚刚完成了有关类的学习。我不知道为什么我不断收到此错误C4244(检查标题)。我正在使用Visual Studio 2017反馈将不胜感激。

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

#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”);
}

`

c++ class type-conversion warnings private
1个回答
0
投票

警告是告诉您,您要存储的值对于要放入的容器太大。cin.gcount()返回类型为std::streamsize的值。这通常是一个带符号的64位(或32位)数字。 CharCountunsigned short,通常为16位。

有效地,您试图将一个有符号的64位值存储为一个无符号的16位值,编译器对此不满意。您还应该将CharCount更改为std::streamsize类型。

© www.soinside.com 2019 - 2024. All rights reserved.