2013-08-01 3 views
0

Я использую C++ для tokenize строки с использованием разделителя, и я могу вывести текущий токен, используя cout в цикле while. То, что я хотел бы сделать, это сохранить текущее значение токена в массиве, чтобы я мог получить к нему доступ позже. Вот код, у меня сейчас:Хранение символа строки в массив

string s = "Test>=Test>=Test"; 
string delimiter = ">="; 
vector<string> Log; 
int Count = 0; 
size_t pos = 0; 
string token; 
while ((pos = s.find(delimiter)) != string::npos) { 
token = s.substr(0, pos); 
strcpy(Log[Count].c_str(), token.c_str()); 
Count++; 

s.erase(0, pos + delimiter.length()); 
} 
+0

Несомненно, это не скомпилировано. Как вы можете 'strcpy()' в результате вызова 'c_str()'? Вы должны просто 'push_back()' токен в Log. –

ответ

1

Просто используйте push_back на векторе. Он сделает копию для токена в вектор для вас. Нет необходимости держать счет; нет необходимости в strcpy:

string s = "Test>=Test>=Test"; 
string delimiter = ">="; 
vector<string> Log; 
size_t pos = 0; 
string token; 
while ((pos = s.find(delimiter)) != string::npos) { 
    token = s.substr(0, pos); 
    Log.push_back(token); 
    s.erase(0, pos + delimiter.length()); 
} 
Смежные вопросы