// SUGGESTION 1 istringstream iss(line, istringstream::in); int nWord = 0; int i=0; while( (nWord < 2000) && (iss >> word) ) { strncpy(temp_eng_word[nWord], word.c_str(), 49); temp_eng_word[nWord][49] = '\0'; // if it's not already zero-allocated ++nWord; cout < words; istringstream iss(line, istringstream::in); while(iss >> word) { words.push_back(word); cout << word <(iss), istream_iterator(), back_inserter(words)); }