Re[2]: istream:: Страупструп не пашет!
От: rivest  
Дата: 09.11.11 15:09
Оценка:
Здравствуйте, 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
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.