如何在iStream&Operator中输入字符串
how to input string in istream& operator
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/
相关文章:
- C++,在int数组中输入字符串或字符会输出0,而不是ascii或error
- 用户输入字符串的文件附加问题..C++
- 从 cin 读取不会返回整个输入字符串
- 输出返回编号。等于输入字符串的单词的字符串数
- 控制台未正确读取输入字符串
- 使用终止程序的指针在数组中输入字符串
- 如何删除用户输入字符串末尾的空字符?
- 在循环中使用 cin.get() 输入字符串
- 如何从输入字符串中提取特定位置的字符?
- 用户输入字符串的结构的搜索向量
- 无法使用 getline() 输入字符串.它只读取一个字符串
- 如何在 c++ 中读取输入字符串,忽略空格
- FSTREAM的问题读取确定,但不编写用户输入字符串
- boost::split会在输入字符串不是常量时更改输入字符串吗?
- 通过键盘输入字符串数组和 int 数组的数组大小
- Zlib 放气输入大于原始输入字符串的字符
- C 忽略输入字符串
- 获取一个输入字符串,将其转换为其十六进制值,然后将其十六进制存储为 int
- 我无法将 Excel 中的输入字符串存储为二维字符串
- 如何识别输入的输入字符串在 c++ 中是两个还是多个单词