2014-11-04 2 views
0

Я все время получаю ошибку «отсутствие соответствия» при компиляции этого кода. Может ли кто-нибудь помочь мне с этим?Выходной файл выпуск в C++

#include <iostream> 
#include <fstream> 
#include <stdlib.h> 
#include <string> 

using namespace std; 
int main() 
{ 
    string filename[]="Hello.txt"; 
    ofstream OutFile; 
    OutFile.open(filename); 
    if(OutFile.fail()) // check for successfully open , 
    { 
    cout << "file named can not be found \n"; 
    exit(1); 
    } 
    OutFile << "Hello, this is my output file"; 
    OutFile.close(); 
    system("pause"); 
    return 0; 
} 

EDIT: А что при чтении и displaing файл? У меня проблемы с getline, и он не будет компилироваться. Может ли кто-нибудь указать на проблему?

#include <iostream> 

#include <fstream> 

#include <stdlib.h> 

#include <string> 
using namespace std; 

int main() 

{ 

    char filename[] = "Hello.txt"; 

    string line = "Hello, this is my output file"; 

    ofstream OutFile; 

    OutFile.open(filename); 

    if(OutFile.fail()) // check for successfully open , 

    { 

    cout << "file named can not be found \n"; 

    exit(1); 

    } 

    OutFile << line; 

    if (OutFile.is_open()) 

     OutFile.getline(line); 

    OutFile.close(); 

    system("pause"); 

} 
+0

Это единственный аргумент (единственный строковый аргумент) - OutFile.open (имя файла). Вы используете массив имен файлов. Ваша трассировка стека ошибок должна показать вам. Вместо этого используйте одну строку. – ha9u63ar

+0

И, пожалуйста, в следующий раз, когда вы получите сообщение об ошибке, сообщите нам, в какой строке возникает ошибка, и какой компилятор вы используете. –

ответ

4

open() занимает один string, а не массив строк.

Вы создаете массив (одного). Попробуйте вместо этого:

string filename = "Hello.txt"; 
ofstream OutFile; 
OutFile.open(filename.c_str()); 
+0

Я только что сделал эту коррекцию и все еще дал мне ту же ошибку – jon

+1

Вам нужно использовать 'filename.c_str()'. 'open' не был изменен для использования' std :: string' до C++ 11 – AndyG

+0

@jon он не должен [он компилирует] (http://coliru.stacked-crooked.com/a/5376d442732033b4), если вы удаляете '[]' – Borgleader

0

Вы использовали string[] вместо string или char[], так что вы определяете массив строк, а не одну строку.

open принимает только один string, а не несколько строк, где один string представляет собой несколько символов/массив символов.

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