2014-10-08 4 views
0

Как и в названии, у меня есть текстовый файл, в котором практически нет заглавных букв, поэтому все предложения не выглядят должным образом, если первая буква не заглавная. Вот мой код:Как заглавные буквы всех букв первого букв после указанного разделителя в текстовом файле?

//This program reads an article in a text file, and changes all of the 
//first-letter-of-sentence-characters to uppercase after a period and space. 
#include <iostream> 
#include <fstream> 
#include <string> 
#include <cctype>//for toupper 
using namespace std; 

int main() 
{ 
    //Variable needed to read file: 
    string str; 
    string input = str.find('.'); 


    //Open the file: 
    fstream dataFile("eBook.txt", ios::in); 
    if (!dataFile) 
    { 
     cout << "Error opening file.\n"; 
     return 0; 
    } 
    //Read lines terminated by '. ' sign, and then output: 
    getline(dataFile, input, '. ');//error: no instance of overloaded function "getline" 
            //matches the argument list 
            //argument types are:(std::fstream, std::string, int) 
    while (!dataFile.fail()) 
    { 
     cout << input << endl; 
     getline(dataFile, input); 
    } 
    //Close the file: 
    dataFile.close(); 
    return 0; 
} 

. ПРИМЕЧАНИЕ: Я знаю, что в моем коде еще нет ключевого слова toupper. Я не знаю, где его установить.

+0

Почему вы ищете пустую строку: 'input = str.find ('.');'? –

+0

Попробуйте следующее: 'while (getline (datafile, input, '.'))' Вы не можете помещать более одного символа между одинарными кавычками, использовать двойные кавычки. –

+0

Итак, период и пробел считаются двумя символами? –

ответ

0

Вместо этого

getline(dataFile, input, '. '); 
    while (!dataFile.fail()) 
    { 
     cout << input << endl; 
     getline(dataFile, input); 
    } 

Вы можете изменить его на

while(getline(dataFile, line, '.')) 
    { 
     for(auto &i : line) 
     { 
      if(!isspace(i)) 
      { 
       i = toupper(i); 
       break; 
      } 
     } 
     outFile<<line<<"."; 
    } 

PS: Я бы предпочел с помощью регулярных выражений для такого рода проблем.