C++ - 使用 IO 重定向输入和输出多个整数



我是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 循环条件以及与之关联的大括号,您的代码应按预期运行。

最新更新