小编Ram*_*mHS的帖子

RAII资源处理

我有一个RAII课程:


 template<typename T>
    class RAII
    {
    public:
    explicit RAII( T* p = 0 ): p_(p){}

    ~RAII() {delete p_;}

    T& operator*() const { return p_;} 
    T* operator?>() const{ return p_;}
    };
Run Code Online (Sandbox Code Playgroud)
{

RAII<std::vector<int>> r(new std::vector<int>());
std::cout<<r­?>size()<<std::endl;

} // The std::vector<int> is automatically deallocated
Run Code Online (Sandbox Code Playgroud)

我知道当我用完范围时,我的析构函数将被调用. ~RAII() {delete P_};

我的问题是:

它如何称呼我的析构函数?

c++ destructor raii

7
推荐指数
1
解决办法
405
查看次数

如何忽略一个字段并将忽略的字段设置为函数中的全局变量?

我有这个代码来组合2个不同的csv文件.

try
{
    var jobStartLine = File.OpenText(PackAuftrag).ReadLine();
    var comparisonField = jobStartLine.Split(';')[4];

    foreach (var line in File.ReadAllLines(BoxData))
    {
        var fields = line.Split(new char[] {';'}, 2);

        if (comparisonField == fields[0])
        {
            File.WriteAllLines(JobStart, 
                               new string[] {jobStartLine + ";" + fields[1]});
            break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我的BoxData = data1;data2;data3;data4;data5

目前,data2到data5正在获取JobStart文件.

Data5不应包含在JobStart文件中.

我想将data5设置为全局变量.

我怎么能这样做,我只是想不出来,需要帮助.

这有助于理解我的问题:如何比较2 .csv文件并创建包含两个csv文件的新.csv文件?

c# field global-variables

5
推荐指数
1
解决办法
352
查看次数

重新枚举USB设备,通过描述符的更改从旧设备升级到新固件

如果我将USB设备连接到主机,然后使用新固件升级USB设备,并更改设备的描述符.主机将使用旧描述符.

我知道我可以通过删除设备等的Windows初始化驱动程序来强制设备重新枚举自己.或者我可以在描述符中碰撞ProductId并且设备将重新枚举.

Windows兑现了有关设备等的信息,因此Windows永远不会要求设备在重新连接有关接口,配置,端点,HID描述符等时再次提供信息.

在此输入图像描述

idProduct - 更改此设置将重新枚举设备,因为Windows会认为它是一个不同的设备.

iSerialNumber - 更改此项将重新枚举,因为Windows需要区分两个相同的idProducts(两个相同的产品连接)

bcdDevice - 应该执行重新枚举的技巧,但它不能像USB规范中那样工作.

我的问题是如何在不删除驱动程序等或更改idProduct或iSerialNumber的情况下强制重新枚举USB设备?

任何帮助将不胜感激...

windows embedded usb enumeration usb-descriptor

5
推荐指数
1
解决办法
172
查看次数

从服务器接收文件后如何移动文件并在C#中重命名?

我正在尝试移动和重命名我从TCP服务器收到的文件.

我的移动和重命名代码:

 *//My sourcePath*
 static string myServerfile = @"C:\Users\me\Documents\file_client\bin\Debug\test1.txt";
 *//My destinationPath*
 static string myFile = @"C:\test\inbox\JobStart.txt";
Run Code Online (Sandbox Code Playgroud)

收到文件后我这样做:

          fs.Close ();
          serverStream.Close ();
                File.Move(myServerfile, myFile);
                Console.WriteLine("Moved");
            } 
            catch (Exception ex) 
            {
                Console.WriteLine ("Cannot be DONE!");  
            }
Run Code Online (Sandbox Code Playgroud)

但是当它达到时,总是抛出异常"无法完成" File.Move(myServerfile, myfile1);

我试过这个: Console.WriteLine(ex.ToString());

结果: System.IO.IOException:无法创建已存在的文件.

在此输入图像描述

我究竟做错了什么?

c# move file-rename

2
推荐指数
1
解决办法
3386
查看次数