我有一个烦人的c++流外错误
I have an annoying c++ outstream bug
这段代码从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;
}
代码运行后,MS编译器在输出框中给出以下消息:
project chap 10 ex 1.exe': Loaded 'C:WindowsSysWOW64ntdll.dll', Cannot find or open the PDB file
'project chap 10 ex 1.exe': Loaded 'C:Program FilesAVAST SoftwareAvastsnxhk.dll', Cannot find or open the PDB file
'project chap 10 ex 1.exe': Loaded 'C:WindowsSysWOW64kernel32.dll', Cannot find or open the PDB file
'project chap 10 ex 1.exe': Loaded 'C:WindowsSysWOW64KernelBase.dll', Cannot find or open the PDB file
'project chap 10 ex 1.exe': Loaded 'C:WindowsSysWOW64msvcp100d.dll', Symbols loaded.
'project chap 10 ex 1.exe': Loaded 'C:WindowsSysWOW64msvcr100d.dll', Symbols loaded.
'project chap 10 ex 1.exe': Loaded 'C:WindowsSysWOW64user32.dll', Cannot find or open the PDB file
'project chap 10 ex 1.exe': Loaded 'C:WindowsSysWOW64gdi32.dll', Cannot find or open the PDB file
'project chap 10 ex 1.exe': Loaded 'C:WindowsSysWOW64lpk.dll', Cannot find or open the PDB file
'project chap 10 ex 1.exe': Loaded 'C:WindowsSysWOW64usp10.dll', Cannot find or open the PDB file
'project chap 10 ex 1.exe': Loaded 'C:WindowsSysWOW64msvcrt.dll', Cannot find or open the PDB file
'project chap 10 ex 1.exe': Loaded 'C:WindowsSysWOW64advapi32.dll', Cannot find or open the PDB file
'project chap 10 ex 1.exe': Loaded 'C:WindowsSysWOW64sechost.dll', Cannot find or open the PDB file
'project chap 10 ex 1.exe': Loaded 'C:WindowsSysWOW64rpcrt4.dll', Cannot find or open the PDB file
'project chap 10 ex 1.exe': Loaded 'C:WindowsSysWOW64sspicli.dll', Cannot find or open the PDB file
'project chap 10 ex 1.exe': Loaded 'C:WindowsSysWOW64cryptbase.dll', Cannot find or open the PDB file
'project chap 10 ex 1.exe': Loaded 'C:WindowsSysWOW64imm32.dll', Cannot find or open the PDB file
'project chap 10 ex 1.exe': Loaded 'C:WindowsSysWOW64msctf.dll', Cannot find or open the PDB file
'project chap 10 ex 1.exe': Loaded 'C:WindowsSysWOW64dwmapi.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;
}
使用您显示的代码,唯一的问题(除了糟糕的格式)是您从未初始化filename
,并且如果ofstream
无法打开,您仍然尝试写入。
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 在某些循环内使用vector.push_back时出现分段错误
- MSVC多行宏编译器错误
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 错误:未在此范围内声明'reverse'