【发布时间】:2016-12-14 03:07:01
【问题描述】:
我是编程新手,并试图在 C++ 中实现 struct 程序,这是一个简单的程序,但它没有打印出正确的结果。请告诉我为什么?
#include <iostream>
using namespace std;
struct classroom {
int number;
char name[9];
int marks;
void getAndPrint()
{
cout << "struct classroom ";
cin >> number;
cout << number << '\n';
cin.get(name, 9);
//cin>>name;
cout << name;
cin >> marks;
cout << marks;
}
};
int main()
{
classroom room1;
room1.getAndPrint();
int i;
cin >> i;
return 0;
}
在 getAndPrint() 函数中,我使用的是 cin.get().. 编译器会正确执行直到打印“数字”,但是当它出现在 cin.get(name,9) 时,它会打印垃圾并跳过其余部分函数内部的代码。如果我使用 cin>>name 那么它工作正常。 谁能告诉我到底是什么问题?
【问题讨论】:
-
您可能想阅读有关
cin.get的信息,不要以为它在做您期望的事情。理解 C++ 流很重要。此外,在不相关的说明中,您永远不会调用您的函数。 -
您需要阅读 C++ 书中有关 C++ 流的章节,特别强调格式化和未格式化操作。
-
除非你真的需要,否则不要使用
char[]-std::string更容易! -
@JackDeeth 很好,不确定这是否一直都是好的建议。他们有数以千计的旧库和使用 char[] 作为 std::string 可以工作的函数的参数的东西。 OP 应该对使用
char[]这样或作为指针感到满意。
标签: c++