Разбить строку на массив символов в C ++ - PullRequest
10 голосов
/ 29 января 2010

Я пишу программу, в которую требуется вставить строку, а затем разбить ее на отдельные буквы. По сути, мне нужна помощь, чтобы найти способ превратить "строку" в ["s", "t", "r", "i", "n", "g"]. Строки также хранятся с использованием строкового типа данных, а не просто массив символов по умолчанию. Я хотел бы сохранить его таким образом и избегать символа, но буду использовать его при необходимости.

Любая помощь была бы хороша, спасибо заранее.

Ответы [ 4 ]

17 голосов
/ 29 января 2010

Предполагая, что у вас уже есть введенная строка:

string s("string");
vector<char> v(s.begin(), s.end());

Это заполнит вектор v символами из строки.

14 голосов
/ 29 января 2010
string a = "hello"; 
cout << a[1];

Надеюсь, это объясняет

1 голос
/ 29 января 2010

Попробуйте использовать c_str() метод std::string:

#include <string>
using namespace std;

int main(void)
{
  string text = "hello";
  size_t length = text.length() + sizeof('\0');
  char * letters = new char[length];
  strcpy(letters, length.c_str());
  for (unsigned int i = 0; i < length; ++i)
  {
      cout << '[' << i << "] == '" << letters[i] << "'\n";
  }
  return EXIT_SUCCESS;
}
1 голос
/ 29 января 2010

Строка - это просто последовательность основного символа (то есть char для std :: string и wchar_t для std :: wstring).

Из-за этого вы легко получаете каждую букву:

for (std::string::size_type l = 0; l < str.length(); ++l)
{
    std::string::value_type c = str[l];
}
...