C++文件操作演示(win10)

21 篇文章 0 订阅
13 篇文章 1 订阅

一,使用open函数打开文件(使用ifstream)

在我的前一篇博文c++面向对象简介中,用ifstream介绍了c++中的文件操作函数ifstream。在这篇文章中给大家介绍一下具体使用方法。

1.绝对路径读取文件

特别注意,在windows系统中的绝对路径如下
D:\programming\1.txt
但是在程序中应当改为:
D:\programming\1.txt
open函数

void open(const char* D:\\programming\\1.txt, int mode)

前面的地址大家都理解,后面mode就需要参考一下对文件操作的类型了。

open函数mode参数表格引用自c语言中文网
我们以“只读文件”操作为例:

int main()
{
    //创建一个文件输入流对象
    ifstream inFile;
    //绝对路径寻找文件
    inFile.open("D:\\programming\\1.txt",ios::in);
    //加上读取模式(默认形式,可以不加)
    string str;//显示一下
    if (inFile){ //条件成立,则说明文件打开成功
        cout<<"done!"<<endl;
        getline(inFile,str);//按行显示
        cout<<str<<endl;
        inFile.close();//关闭操作绝对不可以省略,内存不释放后果很严重!!!
         else
        cout << "error!" << endl;
    return 0;
    }

2.文件名打开

直接把要打开的文件放到项目文件夹下,以VS2019为例,右下方属性中可以找到项目所在位置:
项目位置简单粗暴打开即可:

  
  inFile.open("1.txt");
  

但是相对路径要注意,如果目标文件包含在子文件夹下(如lib)。
就需要这样写相对路径:

inFile.open("lib\\1.txt");

如果有多个文件,在lib前面加上即可,这就是open的使用。

二、使用流对象创建时的构造函数读取文件

上面使用open打开文件,要先创建文件流输入对象:

ifstream inFile;

再利用open函数打开:

inFile.open("D:\\programming\\1.txt");

(也是面向对象编程特点的体现)

对比使用流对象创建时的构造函数读取文件:

ifstream inFile("D:\\programming\\1.txt");

后面类型仍然默认为ios::in。

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C语言中,我们可以使用Windows API来创建多个session。下面是一个简单的示例: 首先,我们需要包含Windows API的头文件。在C语言中,这是通过`#include<windows.h>`来实现的。 接下来,我们需要使用`CreateProcess`函数来创建新的进程。该函数的原型如下: ``` BOOL CreateProcess( LPCTSTR lpApplicationName, LPTSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCTSTR lpCurrentDirectory, LPSTARTUPINFO lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation ); ``` 我们可以调用`CreateProcess`函数来创建一个新的进程,每个进程都运行在一个独立的会话中。这样可以保持不同会话之间的隔离和安全性。 以下是一个示例程序,演示了如何创建两个不同会话的进程: ```c #include <windows.h> int main() { STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory(&si, sizeof(si)); si.cb = sizeof(si); ZeroMemory(&pi, sizeof(pi)); // 创建第一个进程 CreateProcess( NULL, // 可执行文件路径 "C:\\path\\to\\program1.exe", // 运行的命令行 NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi ); // 创建第二个进程 CreateProcess( NULL, // 可执行文件路径 "C:\\path\\to\\program2.exe", // 运行的命令行 NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi ); // 等待两个进程完成 WaitForSingleObject(pi.hProcess, INFINITE); WaitForSingleObject(pi2.hProcess, INFINITE); // 关闭进程和线程的句柄 CloseHandle(pi.hProcess); CloseHandle(pi.hThread); CloseHandle(pi2.hProcess); CloseHandle(pi2.hThread); return 0; } ``` 上述代码通过调用两次`CreateProcess`函数来创建两个不同会话的进程。每个进程可以运行不同的可执行文件或命令行。通过指定不同的命令行参数,我们可以在每个会话中执行不同的操作。为了等待两个进程完成,我们使用了`WaitForSingleObject`函数,并在最后关闭了进程和线程的句柄。 注意,上述示例代码需要根据实际情况修改可执行文件的路径和命令行参数。不同的会话可以通过不同的命令行参数区分开来。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值