C++ fstream的输入输出

C++ fstream的输入输出,c++,fstream,C++,Fstream,谁能告诉我这个代码有什么问题吗?我总是不开门 #include <iostream> #include <fstream> using namespace std; int main(){ fstream fs; fs.open("fsfile2",ios::in|ios::out|ios::binary); if(fs.is_open()){ fs.write("wow",sizeof("wow")); char str[20

谁能告诉我这个代码有什么问题吗?我总是不开门

#include <iostream>
#include <fstream>

using namespace std;

int main(){
    fstream fs;
    fs.open("fsfile2",ios::in|ios::out|ios::binary);
    if(fs.is_open()){
    fs.write("wow",sizeof("wow"));
    char str[20];
    fs.read((char*)str,sizeof(str));
    cout<<str<<endl;}
    else 
        cout<<"Not open\n";
    return 0;
}
#包括
#包括
使用名称空间std;
int main(){
fstream fs;
打开(“fsfile2”,ios::in | ios::out | ios::binary);
如果(fs.is_open()){
财政司司长写(“哇”,sizeof(“哇”);
char-str[20];
fs.read((char*)str,sizeof(str));
解决方案:
请将文件扩展名添加到文件名。
如果它是一个文本文件,它将是

然后,我试着移除

由于第一个进程只写入文件,通过删除它,文件被创建,并且“哇”也被写入其中

为了这些线路

也可以使用C++类的字符串,而不是字符数组,这样文件内的字符数就不再是你的问题了。

#include <string>
string str;
因为您的代码还没有处理二进制文件

我尝试了这些,效果很好!祝您愉快!

解决方案: 请将文件扩展名添加到文件名。 如果它是一个文本文件,它将是

然后,我试着移除

由于第一个进程只写入文件,通过删除它,文件被创建,并且“哇”也被写入其中

为了这些线路

也可以使用C++类的字符串,而不是字符数组,这样文件内的字符数就不再是你的问题了。

#include <string>
string str;
因为您的代码还没有处理二进制文件

我尝试了这些,效果很好!祝您有愉快的一天!试试这段代码

fs.open("fsfile2", ios::app|ios::in|ios::out|ios::binary);
试试这个代码

fs.open("fsfile2", ios::app|ios::in|ios::out|ios::binary);
通过像您一样使用open(),如果这是您的目标,则不会创建文件。 如果要创建新文件,请查看:

如果文件存在,则表明您没有在正确的路径中查找该文件。或者将文件名更改为完整路径,或者将可执行文件放在文件所在的文件夹中

希望这能有所帮助。

像您一样使用open(),如果这是您的目标,则不会创建文件。 如果要创建新文件,请查看:

如果文件存在,则表明您没有在正确的路径中查找该文件。或者将文件名更改为完整路径,或者将可执行文件放在文件所在的文件夹中


希望这有帮助。

可能您没有权限在可执行文件所在的目录中创建文件。

可能您没有权限在可执行文件所在的目录中创建文件。

fstream fs;
不会为您创建新文件。
您需要确保该文件存在于项目目录中。

另一方面,如果您要使用流fs(“file.txt”)的
,它会为您创建文件。或者在打开fstream fs时仅使用ios::out,这将为您创建文件。
fstream fs;
不会为您创建新文件。
您需要确保该文件存在于项目目录中。

另一方面,如果要使用流fs(“file.txt”)的
它会为您创建文件。或者当您打开fstream fs时,只使用ios::out,这会为您创建文件。

除了缩进之外,这会使我们不必要地难以读取文件?您确定
fsfile2
驻留在您的程序运行的同一目录中吗?文件是否已经存在?如果没有t、 然后将ios::app或ios::trunc添加到标志中。不。我想这就是问题所在。谢谢。顺便问一下,你能给我一些缩进提示吗。我是初学者。你的
fs.read
将尝试读取你刚写的“哇”后面的内容。如果你想阅读“哇”返回,您需要返回到文件开始,或关闭并重新打开。除了缩进,这会使我们不必要地难以读取它?并且您确定
fsfile2
驻留在您的程序运行的同一目录中?该文件是否已存在?如果不存在,则将ios::app或ios::trunc添加到标志中。否。我认为我这就是问题所在。谢谢。顺便问一下,你能给我一些缩进提示吗。我是一个初学者。你的
fs.read
将尝试读取你刚才写的“哇”后面的内容。如果你想读回“哇”,你需要返回到文件开始处,或者关闭并重新打开。
fs << "wow";
fs >> str;
#include <string>
string str;
while(!fs.eof()) {
     fs >> str;
     cout << str << endl;
}
#include <string>

fs.open("fsfile2.txt", ios::out); // ios::out for write only
if(fs.is_open()) {

    // writes "wow" to file
    fs << "wow"; 

    // closes the file
    fs.close();

    // ios::in for read only
    fs.open("fsfile2.txt", ios::in); 

    // better to define variable just before using it
    string str;

    // loops until end-of-file
    while(!fs.eof()) {

        // reads a line from file, stores it to str
        fs >> str;

        // shows str to screen
        cout << str << endl;
    }
}
ios::binary
fs.open("fsfile2", ios::app|ios::in|ios::out|ios::binary);