c++: stringstream в вектор
Я пытаюсь сохранить данные, которые находятся в stringstream в вектор. Я могу успешно сделать это, но он игнорирует пробелы в строке. Как сделать так, чтобы пространства также были вытеснены в вектор?
спасибо!
заглушка код:
#include <iostream>
#include <sstream>
#include <vector>
using namespace std;
int main()
{
stringstream s;
string line = "HELLO HELLO";
stringstream stream(line);
unsigned char temp;
vector<unsigned char> vec;
while(stream >> temp)
vec.push_back(temp);
for (int i = 0; i < vec.size(); i++)
cout << vec[i];
cout << endl;
return 0;
}
4 ответов
почему вы используете stringstream
скопировать из string
на vector<unsigned char>
? Вы можете просто сделать:
vector<unsigned char> vec(line.begin(), line.end());
и это сделает копию напрямую. Если вам нужно использовать stringstream
, вы должны использовать stream >> noskipws
первый.
по умолчанию стандартные потоки пропускают пробелы. Если вы хотите отключить пропуск пробела, вы можете явно сделать это при следующем извлечении потока (>>
) операция с помощью манипулятора noskipws, как так:
stream >> std::noskipws >> var;
Я склонен предложить просто использовать контейнер, который вы действительно хотите, но вы также можете использовать манипулятор noskipws
посмотреть этой подробнее о stringstream и другие методы можно использовать, кроме оператора добычи
Edit:
также считают std::copy
или std::basic_string<unsigned char>
для простоты.
вы хотите noskipws
манипулятор. Скажи stream >> std::noskipws;
прежде чем вытаскивать вещи из него.
[отредактировано для добавления std::
префикс, который я тупо опущены. Ваш код не нуждается в нем, потому что он имеет using namespace std;
вверху, но другие могут выбрать не делать этого.]