Ошибка в том, что вы не можете сделать это:
std::string('a');
Или это:
string s = "hello";
std::string(s[0]);
std::string
не имеет конструктора, который бы занимал один char
.
Есть 3 варианта:
Храните ваши данные в std::string
Самый простой. std::string
- это контейнер, очень похожий на std::vector
, за исключением того, что он хранит только тип char
.
Используйте std::vector<char>
Если вам нужен вектор, а не строка, это больше разумно иметь вектор из отдельных символов, а не вектор из 1-char-long-strings.
Вы можете инициализировать его либо с помощью
std::vector<char> vec(s.begin(), s.end())
, либо так, как вы это делали при попытке:
std::vector<char> vec;
std::string s = "hello";
for(int i=0; i<s.length(); i++) {
vec.push_back(s[i]);
}
Использование std::vector<std::string>
Если вам действительно нужно использовать вектор строк, вам нужно использовать правильный std::string
конструктор
std::vector<std::string> vec;
std::string s = "hello";
for(int i=0; i< s.length(); i++) {
vec.push_back(std::string(1, s[i]));
}
Или немного более кратко с std::vector::emplace_back()
std::vector<std::string> vec;
std::string s = "hello";
for(int i=0; i< s.length(); i++) {
vec.emplace_back(1, s[i]);
}