将名为copy的函数的定义写入到标准输出中,该函数读取标准输入中所有待读取的字符串,并将它们显示在一行上,没有其他间距。不要使用任何类型的循环(用于、同时等)。
我试过这样的方法:
void copy()
{
string x;
getline(cin, x);
cout << x << "\n";
if(cin){
copy();
}
else{
return;
}
}但我可能并不完全理解“标准输入中所有待读取的字符串”的含义。有人能帮我吗?
发布于 2014-03-11 23:11:02
递归是满足教师奇怪限制的正确方法,但是,如果您想要将输入存储在变量中等,请查看std::getline以及std::cin的操作符和方法,以便正确使用。当前,值读取存储在堆栈上函数调用的每个作用域的临时字符串x中。
编辑:没有什么特别的问题,尽管在技术上不需要其他情况,因为堆栈将在上次调用copy();之后展开,而且由于它是一个空函数,所以不需要返回。
发布于 2014-03-11 23:24:10
void copy()
{
{ // create a scope...
string x;
if (getline(cin, x))
cout << x << "\n"; // don't output 'x' when getline fails!
} // let x go out of scope - less baggage during recursion...
if(cin)
copy();
}这个问题有点模糊..。
...reads标准输入中需要读取的所有字符串,并将它们显示到标准输出中,一个字符串位于一行,没有其他间距。
“字符串”是否与行相同?我不怀疑的一个原因是,如果是的话,这个问题就更不有趣了(而且你认为不可能!)--一个合理的答案:
std::cout << std::cin.rdbuf();另一个原因是“没有间隔”。也许这指的是每一行的前导和尾随空间,也可能是为了将每个空格分隔的值视为字符串,在这种情况下,您需要:
void copy()
{
{
string x;
if (cin >> x);
cout << x << "\n";
}
if (cin)
copy();
}谁都猜到哪一个是通缉的..。
https://stackoverflow.com/questions/22338568
复制相似问题