Сокет = IP-адрес + порт (числовой адрес)
Вместе они определяют конечную точку для сетевого соединения на машине. (Я просто заваливал сеть 101?)
Поскольку оператор >> не удовлетворяет нашему требованию, когда T = строка, мы можем написать специальную функцию для случая [T = строка]. Возможно, это неправильное решение. Но, как уже упоминалось в работе.
Пожалуйста, поправьте меня, если он не удовлетворяет вашим требованиям.
Я написал пример кода, как показано ниже:
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
template <class T>
class Data
{
T m_value;
public:
void set(const T& val);
T& get();
};
template <class T>
void Data<T>::set(const T& val)
{
stringstream ss;
ss << val;
ss >> m_value;
}
void Data<string>::set(const string& val)
{
m_value = val;
}
template <class T>
T& Data<T>::get()
{
return m_value;
}
int main()
{
Data<int> d;
d.set(10);
cout << d.get() << endl;
Data<float> f;
f.set(10.33);
cout << f.get() << endl;
Data<string> s;
s.set(string("This is problem"));
cout << s.get() << endl;
}
Вот решение:
std::istream & ReadIntoString (std::istream & istr, std::string & str)
{
std::istreambuf_iterator<char> it(istr), end;
std::copy(it, end, std::inserter(str, str.begin()));
return istr;
}
(Спасибо оригинальному плакату в группе новостей C ++)
Где вы хотите, чтобы это остановилось? Если вы хотите прочитать всю строку, вам, вероятно, понадобится функция getline , если вам нужна целая строка, хранимая в объекте streamstring, ваш выбор - метод ostringstream :: str .
Я предполагаю, что вы создаете экземпляр этого шаблона с помощью T = std :: string
. В этом случае вы можете использовать getline:
getline(ss, m_value, '\0');
Однако это предполагает, что вы не будете принимать нулевые символы как допустимые части строки.
В противном случае вы можете написать свой собственный экстрактор для `T '.
Не существует способа с оператором >>, который, как мне известно, исключал бы запись вашего собственного фасета (оператор >> остановить на первом символе, для которого ispace (c, getloc ()) является правда). Но в