在c ++中从stdin读取

kri*_*itx 46 c++

我正在尝试使用c ++从stdin读取,使用此代码

#include <iostream>
using namespace std;

int main() {
    while(cin) {
        getline(cin, input_line);
        cout << input_line << endl;
    };
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我编译时,我收到此错误..

[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
Run Code Online (Sandbox Code Playgroud)

任何想法丢失了吗?

log*_*yth 76

您尚未定义变量input_line.

添加这个:

string input_line;
Run Code Online (Sandbox Code Playgroud)

并添加此包括.

#include <string>
Run Code Online (Sandbox Code Playgroud)

这是完整的例子.我也在while循环后删除了分号,你应该在getline里面正确检测流的结尾.

#include <iostream>
#include <string>

int main() {
    for (std::string line; std::getline(std::cin, line);) {
        std::cout << line << std::endl;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

  • @KerrekSB - "返回0"可能是隐含的,但这是一个从C继承的讨厌的疣.更好地明确. (10认同)
  • @MartinBonner:不同意.主要的隐含回报0很好. (5认同)