Строка в вектор - PullRequest
       8

Строка в вектор

2 голосов
/ 15 марта 2012

У меня есть строка, которую я хочу сохранить в векторе

string a = "N\nT\n";

после каждой новой строки находиться в отдельной ячейке.

std::string ss (".V/\n.F/\n.R/\n");

for(int i = 0; i< ss.size(); i++)
{
    test1.push_back(ss);
}

Я хочу сохранить string в vector test1 это лучший способ?

Ответы [ 4 ]

10 голосов
/ 15 марта 2012

Ваш код не будет работать;он будет хранить строку ss.size() раз в векторе.

Возможно, вы захотите использовать поток строки для разделения строки:

std::stringstream stream(ss);
std::string line;
while (std::getline(stream, line)) {
  test1.push_back(line);
}

Обратите внимание, что символ перевода строки будет отброшен,Если вы хотите сохранить его, push_back(line + "\n");.

4 голосов
/ 15 марта 2012

Boost :: split сделает это за вас.Подробности использования здесь:

http://www.boost.org/doc/libs/1_49_0/doc/html/string_algo/usage.html#id3184031

2 голосов
/ 15 марта 2012

Если перевод строки может быть отменен, вы можете использовать std::copy():

#include <iostream>
#include <sstream>
#include <algorithm>
#include <iterator>
#include <string>
#include <vector>

int main()
{
    std::string ss(".V/\n.F/\n.R/\n");
    std::istringstream in(ss);
    std::vector<std::string> test1;

    std::copy(std::istream_iterator<std::string>(in),
              std::istream_iterator<std::string>(),
              std::back_inserter(test1));

    std::for_each(test1.begin(),
                  test1.end(),
                  [](const std::string& s)
                  { 
                      std::cout << s << "\n";
                  });
    return 0;
}

Выход:

.V/
.F/
.R/
0 голосов
/ 15 марта 2012

Это, конечно, не лучший способ, потому что он не работает. Это просто выдвигает ss.size() экземпляров std::string в векторе.

Вы можете использовать методы find и substr, чтобы разделить строку и вставить их в массив. (хотя не собираюсь писать реальный код, это может быть хорошим упражнением).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...