是否可以使用cin.get()或cin.getline()使用字符串参数进行函数调用?
如果没有,我怎样才能通过这样的函数调用从控制台获得用户输入?
void setString(string str);
string stringText;
void setString(string str) {
stringText = str;
}
int main() {
setString(cin.getline());
return 0;
}
答案 0 :(得分:2)
有一个名为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() );
答案 1 :(得分:1)
cin.getline()
不会返回std::string
,因此您无法将其作为参数直接传递给函数。
您需要将输入存储在变量
中std::string str;
cin >> str;
然后将该变量传递给函数:
setString(str);
答案 2 :(得分:1)
可能你想要这样的东西:
#include <string>
#include <iostream>
int main()
{
std::string stringText;
// puts the input you type into stringText
std::getline(std::cin, stringText);
// Now do what you like with stringText
std::cout << "You typed: " << stringText << '\n';
return 0;
}