我是C++新手,编写一个简单的程序,该程序应该从文件中获取整数作为整数并输出它们适当的格式。问题是程序在输出时跳过其中一个值。例如( 表示换行符)"51 123 -10 153 111"将显示为"123 -10 153 111 0"。此外,任何改进我的代码的提示或指针都会很棒。这是我的代码:
using namespace std;
int main(int argc, char *argv[]) {
size_t i;
int n;
int a, b, c, d, e;
if (argc == 1) {
while (cin >> n) {
cin >> a;
cin >> b;
cin >> c;
cin >> d;
cin >> e;
cout << setw(10);
cout << a << "rn";
cout << setw(10);
cout << b << "rn";
cout << setw(10);
cout << c << "rn";
cout << setw(10);
cout << d << "rn";
cout << setw(10);
cout << e;
}
} else if (strcmp(argv[1],"-x")==0) {
/* not used yet */
} else if (strcmp(argv[1],"-o")==0) {
/* not used yet */
}
}
问题 1:
您正在使用while ( cin >> n )
将数字读入n
。这个数字没有写出来给cout
.这意味着,第一个数字被读取并丢弃。
问题2:
cin >> e;
行并没有真正读到e
.这就是输出中有0
的原因。
建议的修复:
读取while
条件中的所有数字。
while (cin >> a >> b >> c >> d >> e)
{
cout << setw(10);
cout << a << "rn";
cout << setw(10);
cout << b << "rn";
cout << setw(10);
cout << c << "rn";
cout << setw(10);
cout << d << "rn";
cout << setw(10);
cout << e;
}
You while 循环条件 : while(cin >> n)
将尝试在变量 n 中存储一个整数,如果cin >> n
成功,则返回 true,从而允许您进入循环。如果您的所有数据都在文件中并且您没有使用数组/向量来迭代文件以获取文件,我真的看不出使用循环的意义。使用数组将非常有效,例如:
int values[NUMBER_OF_ELEMENTS]; // if number of elements is known
std::vector<int> values;// Use vector otherwise
在任何情况下,请删除 while 循环条件以及与之关联的大括号,您的代码应按预期运行。