Я хотел бы использовать std::getline
и std::string
для чтения всей строки, а затем только выйти из цикла, когда вы можете преобразовать всю строку в double.
#include <string>
#include <sstream>
int main()
{
std::string line;
double d;
while (std::getline(std::cin, line))
{
std::stringstream ss(line);
if (ss >> d)
{
if (ss.eof())
{ // Success
break;
}
}
std::cout << "Error!" << std::endl;
}
std::cout << "Finally: " << d << std::endl;
}
Взгляните на tuplespaces и его реализации. Это никогда не оказывало большое влияние, но все еще интересный подход к созданию распределенных приложений.
Шаблон доски хорош для совместных приложений. Кроме этого я склонен думать, что это - действительно не очень хорошая идея.
доска имеет тенденцию закончиться как большой мешок общего состояния, которые создают все виды интересных схем доступа. Современные языки и методы вся попытка инкапсулировать и управлять управлением состоянием как можно больше, доска как раз наоборот.
времена я нашел, что это обычно использовало в алгоритмах контрольный знак не наличия надлежащего первичного понимания проблемы, которая будет решена. Так, "чтобы быть на безопасной стороне", Вы делаете слишком много состояния доступным для слишком многих агентов.
я удалил этот шаблон из двух приложений и заменил его хорошими, твердыми интерфейсами, которые представили фактический функциональность и требования к данным, и он имел успех оба раза ;)
Распространено в системах C4I, где многие агенты, обновляющие состояние, являются человеческими, но некоторые - программные агенты.
я также видел пробелы Кортежа, используемые в системах SCADA, но обычно не названный как таковым, и без большой части акцента на аспект программного агента. (хотя обычно существует простая система правила, подключенная к пространству для контроля)
Мой взгляд состоит в том, что шаблон доски будет работать очень хорошо, когда у вас есть ограниченный набор данных, которые несколько актеров могут работать параллельно, и где набор данных должен быть рафинирован и перенесен Отказ Это позволяет актерам быть написанным полностью отделенным, с очень простым интерфейсом и все бегущим асинхронно.
Как хороший кандидат на это будет наша система.
Наша система видения имеет некоторые фундаментальные данные (изображения), и у нас есть много алгоритмов, которые создают новые данные из них. Очень часто мы видим, что один алгоритм может привлечь пользоваться информацией о том, что другие алгоритмы производят, но у нас очень плохие способы совместного использования их, поскольку обычные аргументы через сообщения в OO-системе будут быстро содержать свой список для обработки. Также у нас есть проблемы с тем, что некоторая информация, которую мы нажимаем поздно в процессе, могут улучшить догадки раннего раннего, но это потребует больше кондиционирования аргументов.
К сожалению, такая рефакторинг требует больше ресурсов, чем у нас в настоящее время: (