2013-06-25 4 views
0

Я хотел написать программу, которая позволяет пользователям писать какие-то случайные вещи, но я получил ошибку , говорящую Обработка файлов C++ Ошибка

 no matching call to
, которую я не могу понять. пожалуйста помогите. , пока вы пытаетесь ответить на этот вопрос, постарайтесь быть более конкретными.

вот мой код

#include<iostream> 
#include<fstream> 
#include<string> 

using namespace std; 

int main() 
{ 
    string story; 
    ofstream theFile; 
theFile.open("Random.txt"); 
while(cin.get(story,5000)!=EOF) 
{ 
    theFile<< story; 
} 
return 0; 
} 
+0

Что ошибка вы испытываете? –

+0

нет соответствующего вызова на «std :: basic_istream :: get (std: :) и еще несколько» –

+1

Проверьте [документацию] (http://en.cppreference.com/w/cpp/io/basic_istream/get) - нет перегрузки 'istream :: get', который принимает' std :: string'. – jrok

ответ

1

cin.get с 2 аргументами ожидает char* в качестве первого аргумента, и вы пытаетесь передать string в качестве первого аргумента.

Если вы хотите прочитать std::string вместо C-строка до конца строки не использовать getline(cin, story)

Если вы хотите, чтобы прочитать строку до следующего пробела или символа новой строки или другого пустого использования символа cin >> story;

1

Вы, кажешься чтобы попытаться записать содержимое cin в файл. Вы можете просто использовать потоковые операторы:

#include <iostream> 
#include <fstream> 
#include <string> 

using namespace std; 

int main() 
{ 
    string story; 
    ofstream theFile; 
    theFile.open("Random.txt"); 

    if(cin >> story) 
    { 
    theFile << story.substr(0, 5000); 
    } 

    return 0; 
} 

Я предполагаю, что вы хотите только первые 5000 символов Random.txt ...