我是C ++的新手并且编写了一个简单的程序,该程序应该将文件中的整数作为整数并以适当的方式输出格式。问题是程序在输出时会跳过其中一个值。例如(\ n表示新行)“51 123 \ n -10 \ n 153 111”将显示为“123 \ n -10 \ n 153 \ n 111 \ n 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 << "\r\n";
cout << setw(10);
cout << b << "\r\n";
cout << setw(10);
cout << c << "\r\n";
cout << setw(10);
cout << d << "\r\n";
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 */
}
}
答案 0 :(得分:1)
问题1:
您正在使用n
将数字读入while ( cin >> n )
。该号码未写入cout
。这意味着,正在读取和丢弃第一个数字。
问题2:
行cin >> e;
并未真正读取任何内容e
。这就是为什么你在输出中有0
的原因。
建议修复:
以while
为条件阅读所有数字。
while (cin >> a >> b >> c >> d >> e)
{
cout << setw(10);
cout << a << "\r\n";
cout << setw(10);
cout << b << "\r\n";
cout << setw(10);
cout << c << "\r\n";
cout << setw(10);
cout << d << "\r\n";
cout << setw(10);
cout << e;
}
答案 1 :(得分:0)
你循环条件:while(cin >> n)
将尝试在变量n中存储一个整数,如果cin >> n
成功则返回true,从而允许你进入循环。我不喜欢&#39;如果您的所有数据都在一个文件中并且您没有使用数组/向量迭代文件来获取文件,那么我们真正看到了使用循环的重点。使用数组将是有效的,例如:
int values[NUMBER_OF_ELEMENTS]; // if number of elements is known
std::vector<int> values;// Use vector otherwise
在任何情况下,删除你的while循环条件以及与之关联的大括号,你的代码应按预期运行。