Здравствуйте, igna, Вы писали:
I>I>#include <iostream>
I>#include <sstream>
I>using namespace std;
I>int main()
I>{
I> istringstream in("123");
I> cin.rdbuf(in.rdbuf());
I> int i;
I> cin >> i;
I> cout << i << '\n';
I>}
I>
Доделал пример из Страуструпа воспользовавшись идеей igna, посмотрите пожалуйста, буду благодарен за полезные замечания и идеи как это можно сделать лучше.
#include <iostream>
#include <sstream>
#include <string.h>
/.../
int main(int argc, char* argv[])
{
istringstream* in;
switch (argc)
{
case 1:
break;
case 2:
in = new istringstream(argv[1], ios_base::in); // ссылка на строковый поток, созданный по значению первого параметра вызова программы
cin.rdbuf((*in).rdbuf()); // используем новый буфер в качестве буфера потока cin
break;
default:
cout << "Too many arguments\n";
return 1;
}
while (cin)
{
/.../
}
return no_of_errors;
}
У меня линукс, использую gcc-c++-4.5.1-4