是否可以使用 cin.get() 或 cin.getline() 以字符串参数进行函数调用?
如果没有,我如何使用这样的函数调用从控制台获取用户输入?
void setString(string str);
string stringText;
void setString(string str) {
stringText = str;
}
int main() {
setString(cin.getline());
return 0;
}
最佳答案
有一个名为 getline 的 free
函数,它接受一个输入流和一个字符串作为参数,第二个是 out
参数。它返回传入的流对象,而不是字符串。
但是您可以编写自己的函数来返回一个字符串
std::string getConsoleLine()
{
std::string str;
std::getline( std::cin, str );
return str;
}
请注意,就像任何其他输入流一样,cin
可能因周期读取而处于失败状态。您可以让您的函数清除所有标志并首先忽略其中留下的任何内容。
std::string getConsoleLine()
{
// as a precaution add this lines
std::cin.clear();
std::cin.ignore( std::numeric_limits<streamsize>::max() );
std::string str;
std::getline( std::cin, str );
return str;
}
然后您可以将它传递给您的函数。
setString( getConsoleLine() );
关于c++ - 使用带有参数 cin.get() 或 .getline() 的函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25872037/