C++ 第二个文件是';即使代码看起来正确,也不会被创建

C++ 第二个文件是';即使代码看起来正确,也不会被创建,c++,error-handling,C++,Error Handling,我正在尝试将一个文本文件中的数据复制到另一个“新”文本文件。 第一个文本文件已存在于.cpp文件的目录中。 第二个文本文件是通过在运行时获取其名称来创建的。 我面临的问题是看不到创建的“新”文件。 相同的代码在codeblocks IDE中工作(创建了“新”的第二个文件),但在Visual studio中没有创建它。 请帮帮我 char dat; string wnam; ifstream exs; exs.open("test.txt",ios::in); cout << "E

我正在尝试将一个文本文件中的数据复制到另一个“新”文本文件。 第一个文本文件已存在于.cpp文件的目录中。 第二个文本文件是通过在运行时获取其名称来创建的。 我面临的问题是看不到创建的“新”文件。 相同的代码在codeblocks IDE中工作(创建了“新”的第二个文件),但在Visual studio中没有创建它。 请帮帮我

char dat;
string wnam;
ifstream exs;

exs.open("test.txt",ios::in);

cout << "Enter the name of the second file\n";
getline(cin,wnam);

fstream cre;
cre.open(wnam.c_str());

while (exs.get(dat)) {
    cre << dat;
}
cout <<"Done!";

exs.close();
cre.close()
char-dat;
字符串wnam;
ifs;
exps.open(“test.txt”,ios::in);
不能,代码“似乎不正确”。您可以看到,根据文档,您用来打开现有文件和创建新文件的函数都应该在出现故障时设置
failbit
。您似乎没有进行任何错误检查

程序运行时的“当前目录”不太可能是
.cpp
文件所在的目录。所以,最有可能发生的是,您的程序的“当前目录”是完全不同的。(顺便说一句,这也是尝试使用不同IDE时可能会有所不同的事情之一。)因此,“新”文件是在该目录中创建的,您只是看不到它,因为您在错误的位置查找。此外,打开“test.txt”失败,因为它也不在当前目录中,但您不知道它,因为您没有检查错误。如果你不经常检查错误,你就永远不会有任何进展


除了始终检查
failbit
之外,还可以尝试打印当前目录,并将文件名转换为绝对路径名,并在尝试打开它们之前显示它们。或者尝试使用调试器。调试器是一项了不起的发明。

可能是您没有查看正确的目录吗?如果您可以将传递给程序的内容指定为
wnam
,则会有所帮助。如果您尚未尝试确定在何处查找文件,请尝试绝对路径。