zoukankan      html  css  js  c++  java
  • c++ cin 读入txt的问题

    源程序

    #include <iostream>
    using namespace std;
    
    struct Stack
    {
        int tos;
        int stackarray[1000];
    };
    
    Stack S;
    
    void push(int a) {
        S.tos++;
        S.stackarray[S.tos] = a;
    }
    
    void pop() {
        if (S.tos == -1)
            cout << "false" << " ";
        else
        cout << S.stackarray[S.tos] << " ";
        S.tos--;
    }
    int main()
    {
        S.tos = -1;
        string cmd;
        cin >> cmd;
        if (cmd == "pop") {
            cout << "false";
            return 0;
        }
        int number;
        cin >> number;
        push(number);
        while(S.tos >= -1) {
            cin >> cmd;
            if (cmd == "pop")
                pop();
            else if (cmd == "push") {
                cin >> number;
                push(number);
            }
        }
        return 0;
    }
    //a.exe <A-1-in.txt >myoutput.txt

    cmd

    原因是cin遇到txt文件终止符EOF后仍未结束,具体可能与缓冲有关,还是在cin pop导致

    在while循环加入判断

    #include <iostream>
    using namespace std;
    
    struct Stack
    {
        int tos;
        int stackarray[1000];
    };
    
    Stack S;
    
    void push(int a) {
        S.tos++;
        S.stackarray[S.tos] = a;
    }
    
    void pop() {
        if (S.tos == -1)
            cout << "false" << " ";
        else
        cout << S.stackarray[S.tos] << " ";
        S.tos--;
    }
    int main()
    {
        S.tos = -1;
        string cmd;
        cin >> cmd;
        if (cmd == "pop") {
            cout << "false";
            return 0;
        }
        int number;
        cin >> number;
        push(number);
        while(S.tos >= -1) {
            if(cin.eof())
            break;
            cin >> cmd;
            if (cmd == "pop")
                pop();
            else if (cmd == "push") {
                cin >> number;
                push(number);
            }
        }
        return 0;
    }
    //a.exe <A-1-in.txt >myoutput.txt

    之后

    cmd

    注意这样做,命令行输入^Z还是有问题。

    应该还是缓冲区问题。具体以后再说吧

     fc a.txt b.txt比较不同

    可能有空格

  • 相关阅读:
    为了博多
    [JSOI2008]星球大战starwar
    【网络流24题】最小路径覆盖问题
    【中学高级水题本】关路灯
    【网络流24题】分配问题
    【网络流24题】方格取数问题
    【网络流24题】汽车加油行驶
    [洛谷P2057][bzoj1934]善意的投票(最大流)
    LeetCode(38) Count and Say
    LeetCode(36)Valid Sudoku
  • 原文地址:https://www.cnblogs.com/lqerio/p/11680254.html
Copyright © 2011-2022 走看看