[英]C++ : Getline Function Mechanics
#include <iostream>
#include <string>
using namespace std;
int main()
{
int num;
cin >> num;
string s;
getline(cin, s);
cout << s << " " << num << endl;
return 0;
}
在此代码中,如果我输入3并按Enter键,则s取一个空字符串。
1)如果将第一个字符作为换行符,那么在将整数作为输入之后是否有可能将line作为输入?
2)如果我的输入是4567artyu,那么它如何确定7是否必须输入s或num?
我建议您始终阅读用户的完整输入内容。 这将引起最少的混乱。
std::getline
读取一行输入。 std::stoi
或(更通用的) boost::lexical_cast
将输入安全地转换为所需的目标类型。 在这里,您会发现不好的输入并向用户投诉。 我认为,如果提示输入数字,许多用户不会希望输入42bananas
被接受为42,然后“记住” bananas
部分。 这很可能是错字,要求用户更正它很高兴。
对于在将整数作为输入之后将line作为输入,您可以考虑从流中删除杂散的'\\ n'字符。
#include <iostream>
#include <string>
using namespace std;
int main()
{
int num;
cin >> num;
getchar();
string s;
getline(cin, s);
cout << s << " " << num << endl;
return 0;
}
这将达到目的。
对于第二个问题,它将4567
读取为整数,它将继续将其读取为整数,直到达到int的限制为止;如果达到limit,则此后将不考虑任何内容。 然后它会把INT的最大值在变量num
和null
INT字符串s
。 如果未达到限制,则字符串将按原样保留在输入流中,并由变量s
获取。
接受字符串之前尝试使用cin.clear
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.