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; вверху, но другие могут выбрать не делать этого.]