我正在尝试使用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
任何想法丢失了吗?
答案 0 :(得分:68)
您尚未定义变量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;
}
答案 1 :(得分:1)
//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;
}