C++ c++;:cin.getline在单独的情况下被忽略
由于某些原因,C++ c++;:cin.getline在单独的情况下被忽略,c++,getline,C++,Getline,由于某些原因,字符串cin.getline(temp.Autor,20)被忽略。请看一看 你能帮我理解为什么吗 struct BOOK { char Autor[20]; char Title[50]; short Year; int PageCount; double Cost; }; void new_book() { BOOK temp; system("cls"); cout &l
字符串cin.getline(temp.Autor,20)
被忽略。请看一看
你能帮我理解为什么吗
struct BOOK {
char Autor[20];
char Title[50];
short Year;
int PageCount;
double Cost;
};
void new_book()
{
BOOK temp;
system("cls");
cout <<"ENTERING NEW BOOK: " << endl <<endl;
cout <<"Input the author: ";
cin.getline (temp.Autor, 20);
cout <<"Input the title: ";
cin.getline (temp.Title, 50);
cout <<"Input the year of publishing: ";
cin >> temp.Year;
cout <<"Input the number of pages: ";
cin >> temp.PageCount;
cout <<"Input the cost: ";
cin >> temp.Cost;
cout << endl;
print_book(temp);
system("pause");
}
struct BOOK{
char-Autor[20];
字符标题[50];
短年;
整数页计数;
双重成本;
};
作废新书()
{
书本温度;
系统(“cls”);
库特
“不是我发明了这样的结构,我不能改变它。”
谁是C++ C++ C++的一个敌人,他是一个坏的家伙,他是C++的敌人,尤其是现代C++。即使他在计算机科学方面有博士学位,他还是个坏家伙,不知道从哪里开始学习C++。他在CS的其他概念中可能是好的,但是他在C++中不太好。NC++是<强>不>强>坏。
现在回到结构。给他看这个结构:
struct Book
{
std::string Author;
std::string Title;
short Year;
int PageCount;
double Cost;
};
问他这个结构有什么问题,尤其是std::string
成员的问题?问他为什么不喜欢这个而不是char数组。为什么他认为原始char数组比std::string
好
不管他想出什么理由,只要告诉他:看在上帝的份上,学习真实的C++。
学习原始字符数组、指针或内存管理没有错。重点是这些概念应该在课程的后期教授,而不是在开始。我重复一遍,而不是在开始。你的作业确实表明这是课程的开始。因此,在开始时,应该教学生标准库中的std::string
、std::vector
和其他容器以及算法
一旦学生们学习了这些,他们就可以继续学习如何实现它们,其中包括原始数组、指针、内存管理等细节。这些都是伴随问题和惯用解决方案而来的高级主题,最流行的是RAII,它优雅地解决了内存管理。也就是说,学生永远不应该单独学习新建
和删除
,他应该与之一起学习
现在回到如何将数据读入先前定义的结构的成员:
Book book;
//assuming each value is on its own line!
if ( !std::getline(std::cin, book.Author) )
{
std::cerr << "Error while reading Author \n";
}
//read data into other members
Book;
//假设每个值都在自己的行上!
if(!std::getline(std::cin,book.Author))
{
std::cerr当发现空格时,cin
函数停止读取。使用getline
读取作者和书名
阅读此问题了解更多信息:
如果您没有被强制使用字符数组,我建议切换到std::string
并使用std::getline
。之前是否有其他输入?(例如,书籍数量)您可能未读“\n”在其中一个prev输入字符串的末尾。之后,阅读此行的其余部分,即nothing@Kifsif:你可能会很高兴(直到你射中自己的脚),但你的用户不会。毕竟,谁说“Christos Dimitriou Papakyriakopoulos”是一个无效作者?@Kifsif:“不是我发明了这样的结构,我不能改变它。”不管是谁想出这个结构,都是一个坏家伙。他是C++的敌人,尤其是现代C++。你的代码看起来不错,问题必须在你把其他东西放在CIN中的其他例程中。你可以尝试在读取“Autor”之前添加CIN。