也许我遗漏了一些东西,但我很难找到任何关于如何从iostream (std::iostream& stream)中读取的信息。有没有什么办法可以把它转换成字符串或类似的?
为了澄清,这是(例如,我基本上想要做的事情):
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将等于“可能”,而不是完整的字符串。
发布于 2011-10-17 11:10:51
从iostream中读取内容的方式与使用cin时的方式相同。
stream >> varName;疯狂的语法没错,但这正是streams的创建者们决定要做的。
如果你读取字符串,你也可以使用get和getline。Get将获取下一个字符或指定的字符缓冲区,getline将转到下一个换行符。
getline(stringName);你可以在这里阅读更多内容:http://cplusplus.com/reference/iostream/iostream/
发布于 2011-10-17 11:31:52
Streams会自动转换要转换到的类型。
using namespace std;
int number;
double fraction;
string world;
stream >> number >> fraction >> world;当转换为字符串时,它会一直读到第一个单词分隔符,您可能希望使用std::getline。
using namespace std;
string line;
getline(stream,line);发布于 2011-10-17 11:38:42
也许您想要阅读整行内容,在这种情况下,您必须使用std::getline,从而获得:
void readStream(std::iostream& stream)
{
std::string out;
// while getting lines
while(std::getline(stream, out))
{
//do some stuff with each line
}
}您还可以通过将行分隔符作为第三个参数传递给std::getline来选择行分隔符。
https://stackoverflow.com/questions/7789007
复制相似问题