【问题标题】:reading from stdin in c++在 C++ 中从标准输入读取
【发布时间】:2012-05-05 17:37:27
【问题描述】:

我正在尝试使用 C++ 从标准输入读取,使用此代码

#include <iostream>
using namespace std;

int main() {
    while(cin) {
        getline(cin, input_line);
        cout << input_line << endl;
    };
    return 0;
}

当我编译时,我得到这个错误..

[root@proxy-001 krisdigitx]# g++ -o capture -O3 capture.cpp
capture.cpp: In function âint main()â:
capture.cpp:6: error: âinput_lineâ was not declared in this scope

有什么想法吗?

【问题讨论】:

    标签: c++


    【解决方案1】:

    你还没有定义变量input_line

    添加这个:

    string input_line;
    

    并添加此包含。

    #include <string>
    

    这是完整的示例。我还在 while 循环后删除了分号,您应该在 while 内添加 getline 以正确检测流的结尾。

    #include <iostream>
    #include <string>
    
    int main() {
        for (std::string line; std::getline(std::cin, line);) {
            std::cout << line << std::endl;
        }
        return 0;
    }
    

    【讨论】:

    • @KerrekSB - @KerrekSB - return 0 可能是隐含的,但这是一个从 C 继承的讨厌的缺点。最好是明确的。
    • @MartinBonner:不同意。 main 上的隐式返回 0 很好。
    【解决方案2】:
    //declaration:    
        int i2;
        double d2;
        string s2;
    //reading by keyboard
    
        cin >> i2;
        cin >> d2;
        cin.get();
        getline(cin, s2);
    //printing:
        cout << i+i2 << endl;    
        cout<< std::fixed <<std::setprecision(1)<< d + d2 << endl;
        cout << s << s2;
    

    你可以运行这段代码:

    #include <iostream>
    #include <iomanip>
    #include <limits>
    
    using namespace std;
    
    int main() {
        int i = 4;
        double d = 4.0;
        string s = "hi ";
        
    
        int i2;
        double d2;
        string s2;
        cin >> i2;
        cin >> d2;
        cin.get();
        getline(cin, s2);
        cout << i+i2 << endl;
        cout<< std::fixed <<std::setprecision(1)<< d + d2 << endl;
        cout << s << s2;
    
        return 0;
    }
    

    【讨论】:

      猜你喜欢
      • 2012-04-25
      • 1970-01-01
      • 1970-01-01
      • 2018-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-30
      相关资源
      最近更新 更多