在 c + + 中读取 stdin

我尝试使用 C + + 从 stdin 读取代码

#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

知道少了什么吗?

213540 次浏览

您还没有定义变量 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;
}
//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;
}