2013-11-30 3 views
-2

Этот код читает правильные наборы координат x, y из txt-файла в C: \ a \ b.txt. Я знаю, что ifstream работает, потому что я использовал cout для проверки. Он не создаст для меня новый файл. Кто-то предложил использовать close(), и он создает файл один раз. Затем я попробовал снова, много раз, и он не будет создавать файл. Я ввожу: C: \ a \ c.txtУ меня есть раздражающая ошибка C++ outstream

Я не думаю, что с моим кодом что-то не так. Может ли кто-нибудь выявить проблему или предложить решение?

#include "lib.h" 
#include <iostream> 
#include <string> 

using namespace std; 
//....Point class and istream>> operator code 

int main() 
{ 
//....ifstream code 

std::string filename; 
cout << "Enter output filename: "; 
std::getline(cin, filename); 

ofstream ost(filename.c_str(), std::ofstream::out); 
if (!ost.is_open()) cerr << "can't open output file: " << filename << endl; 

    for(int i=0; i<points.size(); ++i) 
     ost<<'('<<points[i].x<<','<<points[i].y<<')'<<endl; 
     cout <<"got here 6"<<endl; 

    ost.close(); 

    keep_window_open(); 

    return 0; 

} 

После кода работает МС компилятор дает это сообщение в выходном окне:

project chap 10 ex 1.exe': Loaded 'C:\Windows\SysWOW64\ntdll.dll', Cannot find or open the PDB file 
'project chap 10 ex 1.exe': Loaded 'C:\Program Files\AVAST Software\Avast\snxhk.dll', Cannot find or open the PDB file 
'project chap 10 ex 1.exe': Loaded 'C:\Windows\SysWOW64\kernel32.dll', Cannot find or open the PDB file 
'project chap 10 ex 1.exe': Loaded 'C:\Windows\SysWOW64\KernelBase.dll', Cannot find or open the PDB file 
'project chap 10 ex 1.exe': Loaded 'C:\Windows\SysWOW64\msvcp100d.dll', Symbols loaded. 
'project chap 10 ex 1.exe': Loaded 'C:\Windows\SysWOW64\msvcr100d.dll', Symbols loaded. 
'project chap 10 ex 1.exe': Loaded 'C:\Windows\SysWOW64\user32.dll', Cannot find or open the PDB file 
'project chap 10 ex 1.exe': Loaded 'C:\Windows\SysWOW64\gdi32.dll', Cannot find or open the PDB file 
'project chap 10 ex 1.exe': Loaded 'C:\Windows\SysWOW64\lpk.dll', Cannot find or open the PDB file 
'project chap 10 ex 1.exe': Loaded 'C:\Windows\SysWOW64\usp10.dll', Cannot find or open the PDB file 
'project chap 10 ex 1.exe': Loaded 'C:\Windows\SysWOW64\msvcrt.dll', Cannot find or open the PDB file 
'project chap 10 ex 1.exe': Loaded 'C:\Windows\SysWOW64\advapi32.dll', Cannot find or open the PDB file 
'project chap 10 ex 1.exe': Loaded 'C:\Windows\SysWOW64\sechost.dll', Cannot find or open the PDB file 
'project chap 10 ex 1.exe': Loaded 'C:\Windows\SysWOW64\rpcrt4.dll', Cannot find or open the PDB file 
'project chap 10 ex 1.exe': Loaded 'C:\Windows\SysWOW64\sspicli.dll', Cannot find or open the PDB file 
'project chap 10 ex 1.exe': Loaded 'C:\Windows\SysWOW64\cryptbase.dll', Cannot find or open the PDB file 
'project chap 10 ex 1.exe': Loaded 'C:\Windows\SysWOW64\imm32.dll', Cannot find or open the PDB file 
'project chap 10 ex 1.exe': Loaded 'C:\Windows\SysWOW64\msctf.dll', Cannot find or open the PDB file 
'project chap 10 ex 1.exe': Loaded 'C:\Windows\SysWOW64\dwmapi.dll', Cannot find or open the PDB file 
The thread 'Win32 Thread' (0xacc) has exited with code 0 (0x0). 
The program '[6132] project chap 10 ex 1.exe: Native' has exited with code 0 (0x0). 
+0

Это только символы отладки. Он говорит вам, что не может найти отладочные символы для системных библиотек. –

+0

Мой вопрос: я не думаю, что с моим кодом что-то не так. Может ли кто-нибудь выявить проблему или предложить решение? – user2904033

+0

Да, цикл 'for' выполняется, если есть проблемы с открытием файла. –

ответ

0
#include "lib.h" 
#include <iostream> 
#include <string> 

using namespace std; 
//....Point class and istream>> operator code 

int main() 
{ 
    //....ifstream code 
    ofstream ost(filename, std::ofstream::out); // filename is never initialized? 
    if (ost.is_open()) 
    { 
     for(int i=0; i<points.size(); ++i) 
     { 
      ost<<'('<<points[i].x<<','<<points[i].y<<')'<<endl; 
     } 
     cout <<"got here 6"<<endl; 
     ost.close(); 
    } 
    else 
    { 
     cerr << "Unable to open file: " << filename << endl; 
    } 

    keep_window_open(); 
    return 0; 
} 

С кодом вы показали, только проблемы (кроме вашего ужасного форматирования) являются что вы никогда не инициализируете filename, и вы все равно пытаетесь записать в ofstream, если он не открывается.

+0

Нет, я инициализировал. Я забыл это показать. Это не мое форматирование. Как я уже говорил в предыдущих комментариях. Я проверил весь этот код из других форумов, пытаясь исправить мою первоначальную проблему. Я действительно не интересовался кодом форматирования, который не работает и был быстрым решением. Я, похоже, решил проблему. Я думаю, что Avast блокирует меня от открытия файлов. Я думаю. – user2904033

+0

Какой BTW, я не понимаю, почему код, который никто другой не может найти проблемы с решением или найти решение, и он оказывается заблокированным программным обеспечением для вирусов, составляет -1 для моей репутации. – user2904033

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