首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cin的价值在某个地方存在吗?

cin的价值在某个地方存在吗?
EN

Stack Overflow用户
提问于 2014-03-11 23:05:55
回答 2查看 1K关注 0票数 2

将名为copy的函数的定义写入到标准输出中,该函数读取标准输入中所有待读取的字符串,并将它们显示在一行上,没有其他间距。不要使用任何类型的循环(用于、同时等)。

我试过这样的方法:

代码语言:javascript
复制
void copy()
{
    string x;
    getline(cin, x);
    cout << x << "\n";
    if(cin){
        copy();
    }
    else{
        return;
    }
}

但我可能并不完全理解“标准输入中所有待读取的字符串”的含义。有人能帮我吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-11 23:11:02

递归是满足教师奇怪限制的正确方法,但是,如果您想要将输入存储在变量中等,请查看std::getline以及std::cin的操作符和方法,以便正确使用。当前,值读取存储在堆栈上函数调用的每个作用域的临时字符串x中。

编辑:没有什么特别的问题,尽管在技术上不需要其他情况,因为堆栈将在上次调用copy();之后展开,而且由于它是一个空函数,所以不需要返回。

票数 1
EN

Stack Overflow用户

发布于 2014-03-11 23:24:10

代码语言:javascript
复制
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标准输入中需要读取的所有字符串,并将它们显示到标准输出中,一个字符串位于一行,没有其他间距。

“字符串”是否与行相同?我不怀疑的一个原因是,如果是的话,这个问题就更不有趣了(而且你认为不可能!)--一个合理的答案:

代码语言:javascript
复制
std::cout << std::cin.rdbuf();

另一个原因是“没有间隔”。也许这指的是每一行的前导和尾随空间,也可能是为了将每个空格分隔的值视为字符串,在这种情况下,您需要:

代码语言:javascript
复制
void copy()
{
    {
        string x;
        if (cin >> x);
            cout << x << "\n";
    }
    if (cin)
        copy();
}

谁都猜到哪一个是通缉的..。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22338568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档