C++ 为什么输出会跳过gets语句(&;char*)

C++ 为什么输出会跳过gets语句(&;char*),c++,string,char,gets,C++,String,Char,Gets,在下面的代码中,我有一个名为Market的类。具有如图所示的数据成员和函数。调用函数shopkeeper(market&m,int i)时,编译器通过get()执行“名称”和“价格”的打印,而不从用户处获取名称 类市场 { 公众: 字符项; 双倍价格、税金、总价; 公众: 市场() { 字符*项目; 价格=0; 税=0; } void店主(市场与营销,国际一级) { cout项是一个字符。如果您阅读了获取的文档,该函数将收到一个指向您必须分配的缓冲区的指针,该缓冲区的大小足以容纳输入,否则将发生

在下面的代码中,我有一个名为
Market
的类。具有如图所示的数据成员和函数。调用函数
shopkeeper(market&m,int i)
时,编译器通过
get()
执行“名称”和“价格”的打印,而不从用户处获取
名称

类市场
{
公众:
字符项;
双倍价格、税金、总价;
公众:
市场()
{
字符*项目;
价格=0;
税=0;
}
void店主(市场与营销,国际一级)
{

cout
是一个字符。如果您阅读了
获取
的文档,该函数将收到一个指向您必须分配的缓冲区的指针,该缓冲区的大小足以容纳输入,否则将发生未定义的行为


此外,GET是一个不应该在C++中使用的函数,它也被从最近的语言版本中删除了。你应该使用<代码> STD::String < /代码>并从<代码> STD::CIN < /C> >中读取它,就像其他所有的东西一样。em;

彼此不兼容。答案中可能值得一提。@Chipster他的代码格式错误,部分从“code”块中掉了出来。
&(项)
char*
完全兼容。它只是一个字符的缓冲区,因此可以容纳零长度字符串。:P
class market
{
    public:
    char item;
    double price, tax, total;
public:


   market()
    {
        char* item;
        price=0;
        tax=0;

    }
    void shopkeeper(market &m, int i)
        {




                cout<<" Item number "<<i<<"\n ";
                cout<<" ----------- "<<"\n";
                cout<<"Name         ";
                gets(&(m.item));
                cout<<" Price        "<<endl;
                cin>>m.price;
                cout<<" Tax          "<<endl;
                cin>>m.tax;

        }