#include <iostream>
#include <vector>
#include <string>
std:: string findSentence(
unsigned const stringIndex,
unsigned const sentenceIndex,
std:: vector < std:: string > const & stringArray,
char const deliminator = '\n ' )
{
auto result = std:: string { "" } ;
if ( stringIndex < stringArray.size ( ) )
{
auto index = unsigned { 0 } ;
auto posStart = std:: string :: size_type { 0 } ;
auto posEnd = stringArray[ stringIndex] .find ( deliminator) ;
while ( ( posEnd ! = std:: string :: npos ) && ( index < sentenceIndex) )
{
posStart = posEnd + 1 ;
posEnd = stringArray[ stringIndex] .find ( deliminator, posStart) ;
index++ ;
}
if ( index == sentenceIndex)
{
result = stringArray[ stringIndex] .substr ( posStart, ( posEnd - posStart) ) ;
}
}
return result;
}
int main( int argc, char ** argv)
{
std:: vector < std:: string > myArray{
"This is the first string." ,
"This is the second string." ,
"This is just an example.\n "
"This is the 2nd sentence in the paragraph.\n "
"This is the 3rd sentence in the paragraph." ,
"This is the fourth string."
} ;
std:: cout << "0 Sentence of 0 String: " << findSentence( 0 , 0 , myArray) << std:: endl ;
std:: cout << "1 Sentence of 0 String: " << findSentence( 0 , 1 , myArray) << std:: endl ;
std:: cout << "2 Sentence of 0 String: " << findSentence( 0 , 2 , myArray) << std:: endl ;
std:: cout << "\n " << std:: endl ;
std:: cout << "0 Sentence of 1 String: " << findSentence( 1 , 0 , myArray) << std:: endl ;
std:: cout << "1 Sentence of 1 String: " << findSentence( 1 , 1 , myArray) << std:: endl ;
std:: cout << "2 Sentence of 1 String: " << findSentence( 1 , 2 , myArray) << std:: endl ;
std:: cout << "\n " << std:: endl ;
std:: cout << "0 Sentence of 2 String: " << findSentence( 2 , 0 , myArray) << std:: endl ;
std:: cout << "1 Sentence of 2 String: " << findSentence( 2 , 1 , myArray) << std:: endl ;
std:: cout << "2 Sentence of 2 String: " << findSentence( 2 , 2 , myArray) << std:: endl ;
std:: cout << "\n " << std:: endl ;
std:: cout << "0 Sentence of 3 String: " << findSentence( 3 , 0 , myArray) << std:: endl ;
std:: cout << "1 Sentence of 3 String: " << findSentence( 3 , 1 , myArray) << std:: endl ;
std:: cout << "2 Sentence of 3 String: " << findSentence( 3 , 2 , myArray) << std:: endl ;
std:: cout << "\n " << std:: endl ;
std:: cout << "0 Sentence of 4 String: " << findSentence( 4 , 0 , myArray) << std:: endl ;
std:: cout << "1 Sentence of 4 String: " << findSentence( 4 , 1 , myArray) << std:: endl ;
std:: cout << "2 Sentence of 4 String: " << findSentence( 4 , 2 , myArray) << std:: endl ;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RyaW5nPgoKc3RkOjpzdHJpbmcgZmluZFNlbnRlbmNlKAogICAgdW5zaWduZWQgY29uc3Qgc3RyaW5nSW5kZXgsIAogICAgdW5zaWduZWQgY29uc3Qgc2VudGVuY2VJbmRleCwgCiAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gY29uc3QmIHN0cmluZ0FycmF5LCAKICAgIGNoYXIgY29uc3QgZGVsaW1pbmF0b3IgPSAnXG4nKQp7CiAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6c3RyaW5neyAiIiB9OwoKICAgIGlmKHN0cmluZ0luZGV4IDwgc3RyaW5nQXJyYXkuc2l6ZSgpKQogICAgewogICAgICAgIGF1dG8gaW5kZXggICAgPSB1bnNpZ25lZHsgMCB9OwogICAgICAgIGF1dG8gcG9zU3RhcnQgPSBzdGQ6OnN0cmluZzo6c2l6ZV90eXBleyAwIH07CiAgICAgICAgYXV0byBwb3NFbmQgICA9IHN0cmluZ0FycmF5W3N0cmluZ0luZGV4XS5maW5kKGRlbGltaW5hdG9yKTsKCiAgICAgICAgd2hpbGUoKHBvc0VuZCAhPSBzdGQ6OnN0cmluZzo6bnBvcykgJiYgKGluZGV4IDwgc2VudGVuY2VJbmRleCkpCiAgICAgICAgewogICAgICAgICAgICBwb3NTdGFydCA9IHBvc0VuZCArIDE7CiAgICAgICAgICAgIHBvc0VuZCA9IHN0cmluZ0FycmF5W3N0cmluZ0luZGV4XS5maW5kKGRlbGltaW5hdG9yLCBwb3NTdGFydCk7CiAgICAgICAgICAgIGluZGV4Kys7CiAgICAgICAgfQoKICAgICAgICBpZihpbmRleCA9PSBzZW50ZW5jZUluZGV4KQogICAgICAgIHsKICAgICAgICAgICAgcmVzdWx0ID0gc3RyaW5nQXJyYXlbc3RyaW5nSW5kZXhdLnN1YnN0cihwb3NTdGFydCwgKHBvc0VuZCAtIHBvc1N0YXJ0KSk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiByZXN1bHQ7Cn0KCmludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKewogICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IG15QXJyYXl7CiAgICAgICAgIlRoaXMgaXMgdGhlIGZpcnN0IHN0cmluZy4iLAogICAgICAgICJUaGlzIGlzIHRoZSBzZWNvbmQgc3RyaW5nLiIsCiAgICAgICAgIlRoaXMgaXMganVzdCBhbiBleGFtcGxlLlxuIgogICAgICAgICJUaGlzIGlzIHRoZSAybmQgc2VudGVuY2UgaW4gdGhlIHBhcmFncmFwaC5cbiIKICAgICAgICAiVGhpcyBpcyB0aGUgM3JkIHNlbnRlbmNlIGluIHRoZSBwYXJhZ3JhcGguIiwKICAgICAgICAiVGhpcyBpcyB0aGUgZm91cnRoIHN0cmluZy4iCiAgICB9OwoKICAgIHN0ZDo6Y291dCA8PCAiMCBTZW50ZW5jZSBvZiAwIFN0cmluZzogIiA8PCBmaW5kU2VudGVuY2UoMCwgMCwgbXlBcnJheSkgPDwgc3RkOjplbmRsOwogICAgc3RkOjpjb3V0IDw8ICIxIFNlbnRlbmNlIG9mIDAgU3RyaW5nOiAiIDw8IGZpbmRTZW50ZW5jZSgwLCAxLCBteUFycmF5KSA8PCBzdGQ6OmVuZGw7CiAgICBzdGQ6OmNvdXQgPDwgIjIgU2VudGVuY2Ugb2YgMCBTdHJpbmc6ICIgPDwgZmluZFNlbnRlbmNlKDAsIDIsIG15QXJyYXkpIDw8IHN0ZDo6ZW5kbDsKICAgIHN0ZDo6Y291dCA8PCAiXG4iIDw8IHN0ZDo6ZW5kbDsKICAgIHN0ZDo6Y291dCA8PCAiMCBTZW50ZW5jZSBvZiAxIFN0cmluZzogIiA8PCBmaW5kU2VudGVuY2UoMSwgMCwgbXlBcnJheSkgPDwgc3RkOjplbmRsOwogICAgc3RkOjpjb3V0IDw8ICIxIFNlbnRlbmNlIG9mIDEgU3RyaW5nOiAiIDw8IGZpbmRTZW50ZW5jZSgxLCAxLCBteUFycmF5KSA8PCBzdGQ6OmVuZGw7CiAgICBzdGQ6OmNvdXQgPDwgIjIgU2VudGVuY2Ugb2YgMSBTdHJpbmc6ICIgPDwgZmluZFNlbnRlbmNlKDEsIDIsIG15QXJyYXkpIDw8IHN0ZDo6ZW5kbDsKICAgIHN0ZDo6Y291dCA8PCAiXG4iIDw8IHN0ZDo6ZW5kbDsKICAgIHN0ZDo6Y291dCA8PCAiMCBTZW50ZW5jZSBvZiAyIFN0cmluZzogIiA8PCBmaW5kU2VudGVuY2UoMiwgMCwgbXlBcnJheSkgPDwgc3RkOjplbmRsOwogICAgc3RkOjpjb3V0IDw8ICIxIFNlbnRlbmNlIG9mIDIgU3RyaW5nOiAiIDw8IGZpbmRTZW50ZW5jZSgyLCAxLCBteUFycmF5KSA8PCBzdGQ6OmVuZGw7CiAgICBzdGQ6OmNvdXQgPDwgIjIgU2VudGVuY2Ugb2YgMiBTdHJpbmc6ICIgPDwgZmluZFNlbnRlbmNlKDIsIDIsIG15QXJyYXkpIDw8IHN0ZDo6ZW5kbDsKICAgIHN0ZDo6Y291dCA8PCAiXG4iIDw8IHN0ZDo6ZW5kbDsKICAgIHN0ZDo6Y291dCA8PCAiMCBTZW50ZW5jZSBvZiAzIFN0cmluZzogIiA8PCBmaW5kU2VudGVuY2UoMywgMCwgbXlBcnJheSkgPDwgc3RkOjplbmRsOwogICAgc3RkOjpjb3V0IDw8ICIxIFNlbnRlbmNlIG9mIDMgU3RyaW5nOiAiIDw8IGZpbmRTZW50ZW5jZSgzLCAxLCBteUFycmF5KSA8PCBzdGQ6OmVuZGw7CiAgICBzdGQ6OmNvdXQgPDwgIjIgU2VudGVuY2Ugb2YgMyBTdHJpbmc6ICIgPDwgZmluZFNlbnRlbmNlKDMsIDIsIG15QXJyYXkpIDw8IHN0ZDo6ZW5kbDsKICAgIHN0ZDo6Y291dCA8PCAiXG4iIDw8IHN0ZDo6ZW5kbDsKICAgIHN0ZDo6Y291dCA8PCAiMCBTZW50ZW5jZSBvZiA0IFN0cmluZzogIiA8PCBmaW5kU2VudGVuY2UoNCwgMCwgbXlBcnJheSkgPDwgc3RkOjplbmRsOwogICAgc3RkOjpjb3V0IDw8ICIxIFNlbnRlbmNlIG9mIDQgU3RyaW5nOiAiIDw8IGZpbmRTZW50ZW5jZSg0LCAxLCBteUFycmF5KSA8PCBzdGQ6OmVuZGw7CiAgICBzdGQ6OmNvdXQgPDwgIjIgU2VudGVuY2Ugb2YgNCBTdHJpbmc6ICIgPDwgZmluZFNlbnRlbmNlKDQsIDIsIG15QXJyYXkpIDw8IHN0ZDo6ZW5kbDsKCiAgICByZXR1cm4gMDsKfQ==