Я пытаюсь прочитать код и отформатировать его так, чтобы он отключился и перешел к новой строке после определенного момента. Сначала я старался просто отображать последовательные символы и превращать их в новую строку после того, как количество символов, прочитанных в этот момент, превзошло предел. Однако, если слово будет превышать лимит, мне нужно, чтобы это слово начало новую строку. Поскольку я абсолютно не понимаю, как это сделать с помощью только символов, я решил попробовать использовать массив строк. Мой код выглядит следующим образом
char ch;
string words[999];
//I use 999 because I can not be sure how large the text file will be, but I doubt it would be over 999 words
string wordscount[999];
//again, 999. wordscount will store how many characters are in the word
int wordnum = 0;
int currentnum = 0;
//this will be used later
while (documentIn.get(ch))
{
if (ch != ' ')
//this makes sure that the character being read isn't a space, as spaces are how we differentiate words from each other
{
cout << ch;
//this displays the character being read
Примерно здесь, в моем коде, я хотел бы "сохранить" все символы в строке, пока символ не будет пробелом. Я не знаю, как это сделать. Может кто-нибудь помочь мне здесь? Я подумал, что это будет что-то вроде этого;
words[wordnum] = 'however i add up the characters'
//assuming I would use a type of loop to keep adding characters until I reach a
//space, I would also be using the ++currentnum command to keep track of how
//many characters are in the word
wordscount[wordnum] = currentnum;
++wordnum;
Я понятия не имею, что вы действительно хотите сделать.
Если вы хотите восстановить каждую строку из файла, вы можете сделать это следующим образом:
std::ifstream ifs("in");
std::vector<std::string> words;
std::string word;
while (std::getline(ifs, word))
{
words.push_back(word);
}
ifs.close();
Функция std :: getline() НЕ ОТОБРАЖАЕТ пустое пространство, такое как ','\t ', в то время как это будет передано через ifs >> word.
Используйте поток входных файлов, чтобы перебирать слова, добавляя их к вектору, тогда vector.size() будет подсчитывать слова.
std::ifstream ifs("myfile.txt");
std::vector<std::string> words;
std::string word;
while (ifs >> word)
words.push_back(word);
Белое пространство будет пропущено по умолчанию, и цикл while будет продолжаться до тех пор, пока не будет достигнут конец файла.
char ch; while (documentIn.get(ch)) {}
было допустимым, но я не могу просто заменить ifs на documentIn. Я не совсем уверен, как работают потоки.