【发布时间】:2013-12-16 20:54:42
【问题描述】:
此代码从位于 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:\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).
【问题讨论】:
-
这些只是调试符号。它告诉你它找不到系统库的调试符号。
-
我的问题是:我认为我的代码没有任何问题。谁能发现问题或提出解决方案?
-
是的,如果打开文件有问题,就会执行
for循环。 -
ifstream 正在工作 的事实似乎毫无用处,因为您没有在程序中使用任何 ifstream。为什么你认为值得一提?
-
如果你为
istream重载operator>>,你也应该在点结构中为ostream重载operator<<。