我误打开了mp3文件,使用Notepad++(在打开方式中)打开并将整个文件以文本形式显示在Notepad中,非常酷。
由于我正在重新学习c ++,我告诉自己让编写一个程序,可以在控制台内打开任何文件并在控制台上显示它们的内容,所以我像这样开始编写代码:
int readAndWrite() {
string filename(R"(path\to\a\file)");
ifstream file(filename);
string line;
if (!file.is_open()) {
cerr << "Could not open the file - '"
<< filename << "'" << endl;
return EXIT_FAILURE;
}
while (getline(file, line)){
cout << line;
}
return EXIT_SUCCESS;
}
但它只显示了文件的3或4行,然后退出程序,我再次检查我的notepad++,发现其中有大约700,000行。我告诉自己也许文件中有一个字符,所以我开始写上面的代码并进行以下更改。不要显示文件,而是将其写入文本文件中。
int readAndWrite() {
string filename(R"(path\to\a\file)");
string filename2(R"(path\to\a\file\copy)");
ifstream file(filename);
ofstream copy(filename2);
string line;
if (!file.is_open()) {
cerr << "Could not open the file - '"
<< filename << "'" << endl;
return EXIT_FAILURE;
}
while (getline(file, line)){
copy << line;
}
return EXIT_SUCCESS;
}
再试一次,还是得到了同样的结果。接下来,我放弃逐行读取文件,而是使用这个函数进行复制。
void copyStringNewFile(ifstream& file, ofstream& copy)
{
copy << file.rdbuf();
}
他们的结果没有改变一点。
此时,我告诉自己问题可能来自于文件,而实际上也是这样,因为当我使用简单的文本文件时,以上所有代码都可以正常工作。
ifstream file(filename);
改为ifstream file(filename, std::ios::binary);
,会有什么不同吗? - JaMiTpath\to\a\file\copy
都不会起作用,因为file
不是一个目录。 - Ted Lyngmo