2013-11-28 3 views
0

У меня есть функция, которую я пишу, называю word_length(). Его цель - взять строку, прочитать ее и указать длину каждого слова в строке из определенной начальной позиции. Код до сих пор даст мне длину от начала всей строки до начала вводимого слова. Я предполагаю, что цикл for запускает его по всей строке, но не уверен, что это происходит в правильном направлении. Горе со мной, я начинающий учитель. Спасибо!Поиск длины всех подстрок в строке

std::string str ("This is the test string I am going to use."); 
std::cout << "The size of " << str << " is " << str.length() << " characters.\n"; 

int start_pos; 
int next_pos; 
int word_length = 0; 

string word = ""; 

//for (unsigned i=0; i<str.length(); i++) 
//{ 
unsigned pos = str.find("the"); 
cout << "The size of the word " << word << " is " << pos << endl; 
//} 
+1

Если длина струны является 'x' то длины всех подстрок' 'x' является [0,1, ..., х]' ' – alfasin

+0

В случае, если без знака поз = str.find (» the ");' называться как 'unsigned pos = str.find (word);'? –

ответ

0

Если ваши слова разделены пробелами, то достаточно найти пробелы.

void print_lens(const string & s) 
{ 
    int old = 0, now = 1; 
    while (now < s.size()) 
    { 
     if (!isspace(s[now])) { ++now; continue; } 
     string word = s.substr(old, now - old); 
     cout << "A word: " << word << ", its length is " << word.size() << endl; 
     old = now + 1; 
    } 
    string word = s.substr(old, s.size() - old); 
    cout << "A word: " << word << ", its length is " << word.size() << endl; 
} 
+0

Теперь у меня есть, чтобы найти длину первого слова, но затем она занимает длину остальной части оставшейся строки вместо следующего слова и следующего. Будет ли strtok() достаточным для этого? – user3042929

+0

@ user3042929 Пожалуйста, покажите свой код. –

Смежные вопросы