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
我该怎么办.. ??
答案 0 :(得分:1)
很可能,您可能在前一个操作的输入缓冲区中保留了一个尾随换行符,可能涉及operator>>
和其他一些变量。 getline
正在读取该尾随换行符,这正是它正在查找的内容,因此它不会提示输入任何内容。
有多种方法可以解决这个问题,但这取决于您认为IntlPhoneNumberWS
对象的有效输入。例如,您可以调用getline
一次,如果您得到一个空字符串,请再次调用它。
答案 1 :(得分:0)
您正在使用错误的方法和/或类来完成工作。 istream :: getline从输入字符并将它们存储到提供的char缓冲区中。见http://www.cplusplus.com/reference/istream/istream/getline/