2011-11-19 27 views
0

基本上我有从C++的std :: istream的使用没有命令行的std :: istream?

istream& getline (istream& is, string& str); 

线程读数而当我结合istream的与cin,然后它,当我键入从标准的命令行作为输入的输入工作正常。

但我想知道是否有一种方法,我可以使读取线程getline获取字符串没有 使用实际的命令行?

基本上我想实现这一点:

通过只是调用一个函数WriteToIStream与参数str(而不是在命令行中键入STR)和读线程getilne()可以得到str

void WriteToIStream(string& str) 
{ 
//... 
} 

非常感谢

+0

为什么使用全局'cin'这个 - 你可以创建一个只用于与线程通信的新流。 –

+0

“获取字符串,而不使用实际的命令行”,你想从哪里得到字符串呢? – ybungalobill

+0

@KerrekSB:可以请给我一个简单的例子,因为我没有真正写过一个新的流,只使用了那些C++ iostream fstream等。在这种情况下也可以提升:: iostream帮助? – Gob00st

回答

3

cin一个的输入流,绑定到标准输入的实例。对于你的情况,你可以使用一个istringstream(或更一般地,stringstream),这是一个输入流从一个字符串读取:

std::istringstream istr("foobar"); 
getline(istr, some_string_variable); 

这就要求标准头<sstream>

+0

getline默认delim是'\ n',所以假设每次我需要getline需要从共享istr读取stst,我只需要做istr <<“从读线程读取新字符\ n”? – Gob00st

+0

@ Gob00st不,你不需要这个,因为当然阅读将停止在流/字符串的末尾,不需要换行符。这与任何其他流相同**。 'istringstream'不是*特殊情况。 –

+0

我试过这个,但是当我在读线程中用istringstream使用getline时,它立即返回,而不是等待getline用cin做的输入。你能解释为什么吗? – Gob00st