Как вставить строку в начало строки

c++ stringstream

13941 просмотра

3 ответа

Например, только, а не фактический код:

stringstream ss;
ss << " world!";

string hello("Hello");

// insert hello to beginning of ss ??

Спасибо за все ответы, я также нашел этот код, который работает:

ostringstream& insert( ostringstream& oss, const string& s )
{
  streamsize pos = oss.tellp();
  oss.str( s + oss.str() );
  oss.seekp( pos + s.length() );
  return oss;
}
Автор: dlsou Источник Размещён: 17.05.2019 03:32

Ответы (3)


2 плюса

Вы не можете сделать это, не делая хотя бы одну копию. В одну сторону:

std::stringstream ss;
ss << " world!";

const std::string &temp = ss.str();
ss.seekp(0);
ss << "Hello";
ss << temp;

Это зависит от «самого важного const», чтобы продлить срок службы временного и избежать дополнительной копии.

Или, проще и, возможно, быстрее:

std::stringstream ss;
ss << " world!";

std::stringstream temp;
temp << "Hello";
temp << ss.rdbuf();
ss = std::move(temp); // or ss.swap(temp);

Это заимствует rdbufподход из этого ответа , так как интересная проблема здесь заключается в том, как свести к минимуму копии.

Автор: Nemo Размещён: 28.10.2011 07:13

1 плюс

единственный способ, который я вижу, - создать строку из потока и префикс вашей другой строки

string result = hello + ss.str();

его называют потоком по какой-то причине.

Автор: Anders Размещён: 28.10.2011 07:08

0 плюса

Предполагая, что ss1 содержит «привет»,

ss1 << ss.rdbuf();

или же

ss1 << "hello" << ss;

Обратитесь к этому URL для получения дополнительной информации: -

stringstream

Автор: Siva Charan Размещён: 28.10.2011 07:11
Вопросы из категории :
32x32