首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从iostream读取

从iostream读取
EN

Stack Overflow用户
提问于 2011-10-17 11:09:12
回答 4查看 2.6K关注 0票数 3

也许我遗漏了一些东西,但我很难找到任何关于如何从iostream (std::iostream& stream)中读取的信息。有没有什么办法可以把它转换成字符串或类似的?

为了澄清,这是(例如,我基本上想要做的事情):

代码语言:javascript
复制
std::stringstream ss("Maybe I'm missing something \n but I'm having a lot of trouble finding any information on how to how to read from an iostream.");
readStream(ss);

void readStream(std::iostream& stream)
{   
    std::string out;
    stream >> out;
    //do some stuff with the string
}

这似乎是可行的,但out将等于“可能”,而不是完整的字符串。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-10-17 11:10:51

从iostream中读取内容的方式与使用cin时的方式相同。

代码语言:javascript
复制
stream >> varName;

疯狂的语法没错,但这正是streams的创建者们决定要做的。

如果你读取字符串,你也可以使用get和getline。Get将获取下一个字符或指定的字符缓冲区,getline将转到下一个换行符。

代码语言:javascript
复制
getline(stringName);

你可以在这里阅读更多内容:http://cplusplus.com/reference/iostream/iostream/

票数 3
EN

Stack Overflow用户

发布于 2011-10-17 11:31:52

Streams会自动转换要转换到的类型。

代码语言:javascript
复制
using namespace std;
int number;
double fraction;
string world;
stream >> number >> fraction >> world;

当转换为字符串时,它会一直读到第一个单词分隔符,您可能希望使用std::getline

代码语言:javascript
复制
using namespace std;
string line;
getline(stream,line);
票数 3
EN

Stack Overflow用户

发布于 2011-10-17 11:38:42

也许您想要阅读整行内容,在这种情况下,您必须使用std::getline,从而获得:

代码语言:javascript
复制
void readStream(std::iostream& stream)
{   
    std::string out;

    // while getting lines
    while(std::getline(stream, out))
    {
        //do some stuff with each line
    }
}

您还可以通过将行分隔符作为第三个参数传递给std::getline来选择行分隔符。

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

https://stackoverflow.com/questions/7789007

复制
相关文章

相似问题

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