std :: istream без командной строки? - PullRequest
0 голосов
/ 19 ноября 2011

По сути, у меня есть чтение потока из c ++ std :: istream с использованием

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

И когда я связываю istream с cin, тогда он работает нормально, когда я набираю ввод из стандартной командной строки каквходные данные.

Но мне интересно, есть ли способ заставить поток чтения getline получить строку, не используя фактическую командную строку?

В основном я хочу добиться этого:

Путем простого вызова функции WriteToIStream с параметром str (вместо типа str в командной строке) и потока чтения getilne () может получить str.

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

МногиеСпасибо

1 Ответ

3 голосов
/ 19 ноября 2011

cin - это только один экземпляр входного потока, связанный со стандартным входом. В вашем случае вы можете использовать istringstream (или, в более общем случае, stringstream), который является входным потоком для чтения из строки:

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

Для этого требуется стандартный заголовок <sstream>.

...