我有一个恼人的C++输出流错误

我有一个恼人的C++输出流错误,c++,file-io,iostream,C++,File Io,Iostream,此代码从位于C:\a\b.txt的txt文件中读取正确的x、y坐标集。我知道ifstream正在工作,因为我用cout来验证。它不会为我创建新文件。有人建议使用close,它会一次性创建一个文件。然后我又尝试了很多次,但都无法创建文件。我正在输入:C:\a\C.txt 我认为我的代码没有任何问题。有人能发现问题或提出解决方案吗 #include "lib.h" #include <iostream> #include <string> using namespace s

此代码从位于C:\a\b.txt的txt文件中读取正确的x、y坐标集。我知道ifstream正在工作,因为我用cout来验证。它不会为我创建新文件。有人建议使用close,它会一次性创建一个文件。然后我又尝试了很多次,但都无法创建文件。我正在输入:C:\a\C.txt

我认为我的代码没有任何问题。有人能发现问题或提出解决方案吗

#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;

}

对于您显示的代码,除了糟糕的格式之外,唯一的问题是您从未初始化文件名,并且如果无法打开ofstream,您仍然尝试写入。

这些只是调试符号。它告诉您它找不到系统库的调试符号。我的问题是:我认为我的代码没有任何问题。有人能发现问题或提出解决方案吗?是的,如果打开文件时出现问题,将执行for循环。ifstream正在工作这一事实似乎毫无用处,因为您的程序中没有使用任何ifstream。为什么您认为它值得一提?如果您为istream重载运算符>>,您也应该重载运算符或我没有初始化。我忘了拿那个。这不是我的格式。正如我在前面的评论中所说的那样。我从其他论坛上窃取了所有的流代码,试图修复我最初的问题。我真的不感兴趣的格式化代码,不工作,是一个快速修复。我似乎已经解决了这个问题。我想Avast阻止我打开文件。我想。顺便说一句,我不明白为什么其他人找不到问题或解决方案的代码被病毒软件屏蔽了,这对我的声誉是一个-1。
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).
#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;
}