Используя std::stringstream
, поскольку Вы имеете превосходные работы, и делаете точно, что Вы хотели. Если Вы просто ищете различный способ сделать вещи, хотя, можно использовать std::find()
/ std::find_first_of()
и std::string::substr()
.
Вот пример:
#include
#include
int main()
{
std::string s("Somewhere down the road");
std::string::size_type prev_pos = 0, pos = 0;
while( (pos = s.find(' ', pos)) != std::string::npos )
{
std::string substring( s.substr(prev_pos, pos-prev_pos) );
std::cout << substring << '\n';
prev_pos = ++pos;
}
std::string substring( s.substr(prev_pos, pos-prev_pos) ); // Last word
std::cout << substring << '\n';
return 0;
}
Хорошая книга, на которую стоит обратить внимание, - это Мартин Фаулер «Шаблоны архитектуры корпоративных приложений» .
Там он проходит через некоторые шаблоны для получения / отображения данных, такие как DTO, Единица работы, шаблон репозитория и т. Д. Может быть, что-то может быть полезно вместе с Entity Framework. Надо бы взглянуть на него.
Мы используем код, аналогичный тому, что вы используете в примере единицы работы.
Мы также делаем то, что делаем, чтобы сопоставлять объекты с объектами передачи данных.
На эту тему есть много статей, но список будет значительно сокращен, если вы захотите хорошую. Эта статья из журнала MSDN Magazine довольно хороша, хотя она конкретно касается n-уровневых приложений. Но поскольку вы не говорите, что строите, возможно, это поможет.
Альтернативой может быть LINQ 2 SQL. Вот статья Внедрение зависимостей с помощью Unity и Linq to SQL DataContexts
UNITY - http://unity.codeplex.com/