У меня ошибка, как исправить c++?

Рейтинг: 0Ответов: 1Опубликовано: 05.05.2015
#include "stdafx.h"
#include <fstream>
#include <iostream>

using namespace std;

int menu()
{
    system("cls");
    int variant;
    cout << "Выберите вариант\n" << endl;
    cout << "1. Создать файл\n" << endl;
    cout << "2. Прочитать файл\n" << endl;
    cout << "0. Свалить\n" << endl;
    cout << ">>> ";
    cin >> variant;
    return variant;
}

void creafile()
{

    char buff[200];
    ofstream fout("text.txt", ios_base::out | ios_base::trunc);
    fout << "arfgdsdujdsvbtyjunesh";// это текст вот.
    fout.close();
}

void readfile()
{


    ifstream f("text.txt", ios_base::in);
    string s;
    int i = 0;
    char c;
    cout << "Какой символ?";
    cin >> c;
    while (f){

        f >> s;
        i += (s[s.length()] == c) ? 1 : 0;
    }
    cout << "Таких строк: " << i;
}

int main(int argc, char* argv[])
{
    setlocale(LC_ALL, "Rus");

    for (int variant = menu(); variant; variant = menu())


        switch (variant) {
        case 1:
            cout << "Приступим к созданию, для начала" << endl;
            creafile();
            break;
        case 2:
            readfile();
                break;
    }
    return 0;
}

error C2679: бинарный ">>": не найден оператор, принимающий правый операнд типа "std::string" (или приемлемое преобразование отсутствует)

Ответы

▲ 1

Во-первых, надо писать все необходимые файлы

#include <string>

Во-вторых, надо было создавать пустой проект (т. е. с соответствующей галочкой и без галочки про безопасный жизненный цикл).

И в-третьих, надо указывать номер строки с ошибкой (а лучше саму строку).