c ++ строки и ввод файла - PullRequest
1 голос
/ 04 мая 2010

Хорошо, прошло много времени с тех пор, как я выполнял ввод файлов или манипуляции со строками, но я пытаюсь сделать следующее:

   while(infile >> word) { 
    for(int i = 0; i < word.length(); i++) {
        if(word[i] == '\n') { 
            cout << "Found a new line" << endl; 
            lineNumber++; 
        }   
        if(!isalpha(word[i])) { 
            word.erase(i); 
        } 
        if(islower(word[i])) 
            word[i] = toupper(word[i]); 


    } 
   } 

Теперь я предполагаю, что это не работает, потому что >> пропускает символ новой строки ?? Если так, то как лучше это сделать.

Ответы [ 3 ]

9 голосов
/ 04 мая 2010

Я предполагаю, что word - это std::string. При использовании >> первый символ пробела завершает «слово», а следующий вызов пропускает пробел, поэтому в word.

пропуски отсутствуют.

Вы не говорите, что на самом деле пытаетесь сделать, но для строчного ввода вы должны рассмотреть возможность использования бесплатной функции std::getline, а затем разбить каждую строку на слова как отдельный шаг.

1010 * Е.Г. *

std::string line;
while( std::getline( std::cin, line ) )
{
    // parse line
}
2 голосов
/ 04 мая 2010

Имеется функция getline .

1 голос
/ 04 мая 2010

Как насчет использования getline()?

string line;
while(getline(infile, line))
{
    //Parse each line into individual words and do whatever you're going to do with them.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...