如何在iStream&Operator中输入字符串

how to input string in istream& operator

本文关键字:输入 字符串 Operator iStream      更新时间:2023-10-16
istream& operator>>(istream& is, IntlPhoneNumberWS& obj)
{
    char nm[100];
    cout << "Subscriber   : ";
    is.getline(nm, 100); //problem
    obj.set(nm); //sets nm to current object; 
    return is;
}
void IntlPhoneNumber::set(char* nm) //only example
{
    strcpy(name,nm);
}

当我调试代码并来到 is.getline(nm,100( 时,它不会提示我输入任何内容,只需跳到下一行,将 nm 保留为 NULL

我该怎么办..??

很可能在

上一个操作的输入缓冲区中保留了一个尾随换行符,可能涉及operator>>和一些其他变量。 getline正在读取该尾随换行符,这正是它正在寻找的,因此它不会提示更多输入。

有多种方法可以处理此问题,但这取决于您认为IntlPhoneNumberWS对象的有效输入。 例如,可以调用getline一次,如果得到空字符串,请再次调用它。

您使用了错误的方法和/或类。iStream::getline 从输入流中提取字符,并将其存储到提供的 char 缓冲区中。请参阅 http://www.cplusplus.com/reference/istream/istream/getline/