2016-11-26 2 views
1

Попытка подсчета количества похожих элементов в текстовом файле после написания текста, но я получаю No operator << matches these operands operand type are std::ofstream >> std::string. Код работает, но при добавлении цикла while я получаю сообщение об ошибке textfile >> item. Имеет ли это какое-либо отношение к потоку текстового файла?no operator соответствует этим операндам ofstream >> string

#include "stdafx.h" 
#include <fstream> 
#include <iostream> 
#include<string> 
using namespace std; 

int main() 
{ 

    string accord[6]; 

    ofstream textfile; 
    textfile.open("C:\\temp\\1.txt"); 

    cout << "Enter a 6 cylinder car : " << endl; 

    for (int x = 0; x < 6; x++) { 
     getline(cin, accord[x]); 
    } 
    for (int x = 0; x < 6; x++) { 

     textfile << accord[x] << endl; 
    } 
    int count = 0; 
    string item; 
    while (!textfile.eof()) { 
     textfile >> item; 
     if (item == "6") { 
      count++; 
     } 
    } 

    cout << count << "found!" << endl; 



    textfile.close(); 
    return 0; 
} 
+2

'ofstream' означает выходной поток файла. Вы не можете читать и писать одновременно. Используйте 'ifstream' для чтения – Stefan

+0

(https://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-considered-wrong) – Biffen

ответ

2

Может быть, потому что, как говорит ошибка, класс std::ofstream не имеет такого оператора.

Ofstream: класс выходного потока для работы с файлами.

Как вы можете себе представить, выходной поток представляет собой объект, предназначенный для записи (вывода). Таким образом, вы не допускаете ввода операции.

std::fstream - выходной и входной поток для файла. Он поддерживает operator<<operator>>.

2

Переменная textfile объявлена ​​как имеющий тип std::ofstream

ofstream textfile; 

Там нет operator >> определяется для объектов данного типа,

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

Смежные вопросы