C++ C++;运行后打开的文件似乎会破坏文件

C++ C++;运行后打开的文件似乎会破坏文件,c++,fstream,C++,Fstream,简单地说,我双击文件中的image1,它就会打开。我运行下面的代码打开image1,但什么也没有出现。因此,我再次进入带有image1的文件,双击它,windows photo viewer说,“windows photo viewer无法显示此图片,因为该文件为空。”我对另外两个测试图像执行了此操作,同样的情况也发生了。没有什么重要的东西丢失了,但这个方法似乎正在删除它试图打开的任何文件,我很好奇为什么以及如何修复它 #include <iostream> #include <

简单地说,我双击文件中的image1,它就会打开。我运行下面的代码打开image1,但什么也没有出现。因此,我再次进入带有image1的文件,双击它,windows photo viewer说,“windows photo viewer无法显示此图片,因为该文件为空。”我对另外两个测试图像执行了此操作,同样的情况也发生了。没有什么重要的东西丢失了,但这个方法似乎正在删除它试图打开的任何文件,我很好奇为什么以及如何修复它

#include <iostream>
#include <fstream>
#include <chrono>
#include <thread>

void main()
{
    std::ofstream imagetest;
    imagetest.open("C:\\Users\\Filepath\\image1.jpg");
    std::chrono::milliseconds dura(2000);
    std::this_thread::sleep_for(dura);//Kept the sleep in because I didn't know if having the console up would affect the file/image from opening. 
}
#包括
#包括
#包括
#包括
void main()
{
std::流图像测试;
打开(“C:\\Users\\Filepath\\image1.jpg”);
标准时间毫秒杜拉(2000);
std::this_thread::sleep_for(dura);//保持睡眠状态,因为我不知道打开控制台是否会影响文件/图像的打开。
}

如果您打开一个文件流进行写入,那么它将擦除该文件的所有内容,就像您在txt文件上执行此操作一样。因此,如果您不希望这种情况发生,您总是希望以读取模式打开流

如果您打开文件流进行写入,那么它将擦除该文件的所有内容,就像在txt文件上执行此操作一样。因此,如果不希望发生这种情况,您总是希望打开“读取模式流”

ofstream
表示“输出文件流”。除了创建不存在的文件外,它还删除确实存在的文件的内容。因此,您正在打开一个现有文件进行编写,并在编写过程中清除其内容。您可能需要
ifstream
,“输入文件流”用于读取

如果要在启动默认Windows应用程序以读取文件的意义上“打开”文件,可以通过
system
使用Windows
start
命令:

system("start \"C:\\Users\\Filepath\\image1.jpg\"");
或Windows API:

#包括
ShellExecute(
无效的
“开放”,
“C:\\Users\\Filepath\\image1.jpg”,
无效的
无效的
SW_SHOWNORMAL
);

of stream
代表“输出文件流”。除了创建不存在的文件外,它还删除确实存在的文件的内容。因此,您正在打开一个现有文件进行编写,并在编写过程中清除其内容。您可能需要
ifstream
,“输入文件流”用于读取

如果要在启动默认Windows应用程序以读取文件的意义上“打开”文件,可以通过
system
使用Windows
start
命令:

system("start \"C:\\Users\\Filepath\\image1.jpg\"");
或Windows API:

#包括
ShellExecute(
无效的
“开放”,
“C:\\Users\\Filepath\\image1.jpg”,
无效的
无效的
SW_SHOWNORMAL
);
首先

std::ofstream imagetest;
正在使用内核打开文件以读取文件数据。。 当你在windows中双击文件时,这可能会破坏文件的“打开”

如果希望windows打开图像以使用默认应用程序查看,则需要另一个方法调用,因为ofstream.open不是您想要的

尝试:

首先,

正在使用内核打开文件以读取文件数据。。 当你在windows中双击文件时,这可能会破坏文件的“打开”

如果希望windows使用默认应用程序打开图像进行查看,则需要另一个方法调用,因为ofstream.open不是您想要的

尝试:


C++的级别低于脚本。开放并不意味着开始。 您必须使用START C:\Users\Filepath\image1.jpg执行批处理脚本。
或者学习更多的库来做C++的……/p> C++的脚本级别比脚本低。开放并不意味着开始。 您必须使用START C:\Users\Filepath\image1.jpg执行批处理脚本。

或者学习更多的库来做C++中的……/p>你想<代码> STD::IFSturi打开文件来读取。我应该用它替换什么?或者我应该看什么才能得到我想要的结果?
std::ifstream imagetest,读入数据结构,然后输出另一个文件?如果您希望open会打开一个包含图像的窗口,那么您的目标与open的目标相去甚远。只需打开预先读取要写入的文件,然后在程序退出时将其清空即可。请参阅使用std::ifstream进行的更改,没有任何内容被删除,这很好。但出于某种原因,我不会打开文件。那会是ios::in吗?你想要
std::ifstream
打开文件进行读取。哦!我应该用它替换什么?或者我应该看什么才能得到我想要的结果?
std::ifstream imagetest,读入数据结构,然后输出另一个文件?如果您希望open会打开一个包含图像的窗口,那么您的目标与open的目标相去甚远。打开只需预先准备要写入的文件,然后在程序退出时清空它。请参阅使用std::ifstream进行的更改,没有任何内容被删除,这很好。但出于某种原因,我不会打开文件。那会是ios::in吗?我想他想要的更多,open的行为会有点像START命令。差不多,是的。应用了ifstream并修复了文件被擦除的问题。现在我只是想打开这个文件。我想他想要的更多,打开的行为会有点像START命令。差不多,是的。应用了ifstream并修复了文件被擦除的问题。现在我只是想打开文件。使用ShellExecute和SW_SHOW需要什么要求?答案在上述文档的标题部分“Shellapi.h”中,这意味着您必须#包含该标题才能编译(并将库提供给链接器,但这可能在默认库路径中)。使用ShellExecute和SW#U SHOW需要什么要求?这两个都是未定义的。答案在上述文档的标题部分“Shellapi”中。
ShellExecute(NULL,"open","C:\\Users\\Filepath\\image1.jpg",NULL,NULL,SW_SHOW);