我有一个双重问题,我对它的两个分支都不熟悉.
背景: 我从MSI购买了一台新笔记本电脑.作为我以前从未见过的功能,CD驱动器没有安装在驱动器上的机械弹出按钮.相反,数字弹出按钮是功能键上方"智能条"的一部分.不幸的是,智能条下面的软件非常糟糕.即使在被动模式下,它占用了屏幕空间,也占用了任务栏上的空间.*我已经卸载了这个软件.
项目: 我想编写一个在启动时运行的程序,并且在后台不显眼.该程序的唯一功能是使弹出按钮弹出CD驱动器.
第一步:我想知道当我按下按钮时会发生什么.我怀疑我不需要编写任何代码但可以使用实用程序 - 我的一位同事提到了"事件记录器",但谷歌提供了无用的东西.
第二步:我想编写所说的程序,这意味着我需要与WIN32或可能的.net框架进行交互,以便在我右键单击"我的电脑"下的CD驱动器时执行相同的函数调用,然后单击"喷射."
问题: 第一个问题:你知道一个实用工具会告诉我按下按钮会发生什么吗?
第二个问题:你知道我需要在该事件上调用哪个函数来弹出驱动器吗?
第三个问题:我是否忽略了一些明显的其他路径?
我对"我遇到同样的问题,这里是我写的解决方案的源代码"的答案持开放态度"我想这个教程可能对你有所帮助吗?"
我更愿意使用C/C++/C#,但我愿意接受其他建议.正如标题所述,我在Windows 7下工作.
*好奇的是,该软件是MSI S-Bar,由于某种原因被吹捧为这一系列笔记本电脑的"功能".
这可能恰好属于Stack Exchange的不同部分,但我不这么认为 - programmers.se更多的是关于其他事情.
回答问题:你可以用std :: ios :: binary做一些你无法在文本模式下做的事情(例如相对搜索),但是我无法在文本模式下找到任何你无法在二进制模式下做的事情 - 甚至使用例如std :: getline()将文件作为文本读取
那我为什么要打开文字呢?作为一个可能相关的问题,为什么不默认打开二进制?那个用例会破坏吗?
编辑其他信息
这是让我问的问题:
我有一个在Windows系统上创建的文件 - 也就是说,行结尾是CR LF.
我正在std::ifstream使用std::ios::binary旗帜打开它
我正在解析文件std::getline并获得我期望的行为 - getline一次读取一行.
系统:Windows 7专业版
编译器:用于MINGW32的g ++
我正在排序一个大的文件目录,我正在尝试从ls命令的输出中选择单独的行并仅显示那些,但我得到了奇怪的结果,我对powershell不太熟悉,知道我做错了什么.
这种方法有效:
ls > data.txt
select-string 2012 data.txt
rm data.txt
Run Code Online (Sandbox Code Playgroud)
但是创建一个文件只是为了读取我已经填写到文件中的数据似乎很浪费.我想将输出直接传递给select-string.
我试过这种方法:
ls | select-string 2012
Run Code Online (Sandbox Code Playgroud)
但这并没有给我适当的输出.
我的猜测是我需要将ls的输出转换为select-string可以使用的东西,但我不知道如何做到这一点,甚至不知道这是否真的是正确的方法.
为了练习,我试图创建一个递归目录解析器.
为了简约,我想要递归地包含结果,例如:
1 class CDirectory
2 {
3 private:
4 std::string name;
5 std::vector<CDirectory> subDirectories
6 public:
7 //Various things, constructors etc. go here
8 }
Run Code Online (Sandbox Code Playgroud)
但是,我在这里看到第5行不受支持的行为 - "C++标准(2003)明确表示实例化一个不完整类型的标准容器,调用未定义的行为."
那么,我该怎么办?有没有办法让对象包含类似对象的列表?如果不出意外,我知道制作矢量矢量绝不是违法的,所以这是一个包含自身的对象.
这是一个简单而复杂的问题.
这编译:
int Test;
vector<int> TEST;
TEST.push_back(Test);
cout << TEST.size();
Run Code Online (Sandbox Code Playgroud)
这不编译:
fstream Test;
vector<fstream> TEST;
TEST.push_back(Test);
cout << TEST.size();
Run Code Online (Sandbox Code Playgroud)
有什么特别的原因吗?有没有办法让我获得动态的fstream列表?
错误消息:
1>------ Build started: Project: vector_test, Configuration: Debug Win32 ------
1> vector_test.cpp
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\fstream(1347): error C2248: 'std::basic_ios<_Elem,_Traits>::basic_ios' : cannot access private member declared in class 'std::basic_ios<_Elem,_Traits>'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\ios(176) : see declaration of 'std::basic_ios<_Elem,_Traits>::basic_ios'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char> …Run Code Online (Sandbox Code Playgroud) 我们正在考虑将一些代码转移到CPLD或FPGA中,以使其更快.之前我曾与Xilinks及其工具套件合作过,但出于某种原因决定我们这次使用Altera,所以我试着习惯Quartus II.
特别是,我正在寻找一种方法来明确地将引脚分配给我正在使用的芯片.在Xilinx中,我编辑了网表文件,但我在Quartus中找不到这样的东西.这里是一个程序(作业=>引脚规划),做这一点,但它有一个笨重的GUI,我会远远宁愿在文本编辑器编辑引脚,所以我的两个方面的问题是
答:如何找到存储引脚分配的文件?它没有列在项目导航器中的我的文件下,但是我在Pin Planner中分配的引脚在会话之间保持不变,所以它们必须存储在某个地方.
B:这是一个可怕的想法吗?
IDE是Quartus II 10.1开发套件是MAX II开发板语言是VHDL
编辑:现在,我遇到了我试图通过USB与Dev Kit接口的问题.我正在制作一个串行数据接收器并给它一个数据输入引脚.开发套件有一个USB接收器,所以我试图将din映射到USB连接器所在的任何引脚.根据我的文件(rm_maxII-develop_board-rev1.pdf),USB连接器在"Board Designation U13"上,但是当我进入Pin PLanner并尝试分配它时,没有PIN_U13.我怀疑这是pdf中的一个错误,而不是Pin Planner,但因为我之前从未使用过Altera产品,所以我很困惑.
我正在制作一个玩具程序来从字符串创建类(例如,我向它提供“test1 test2”,它会生成 test1.cpp、test1.h、test2.cpp、test2.h)
\n\n该操作发生在该函数中:
\n\nbool makeClassesFromString(std::string classNames){\n\n bool returnValue = true;\n\n if (classNames == ""){\n\n returnValue = false;\n\n }\n else{\n\n std::istringstream issClassNames (classNames);\n std::string sClassName;\n\n while(issClassNames.good()){\n\n issClassNames >> sClassName;\n std::string sourceName = sClassName;\n sourceName += ".cpp";\n\n std::string headerName = sClassName;\n headerName += ".h";\n\n std::ofstream source(sourceName.c_str()), std::ios::app);\n std::ofstream header(headerName.c_str()), std::ios::app);\n\n //source << "#include \\"" << headerName << "\\"";\n\n\n source.close();\n header.close();\n\n }\n\n }\n\n return returnValue;\n\n}\nRun Code Online (Sandbox Code Playgroud)\n\n这些文件以追加模式打开,以确保任何已存在的类不会被意外覆盖。
\n\n我最近返回到这个程序以包含一些额外的内容 - 特别是,旧版本只是创建了两个空文件,我想修改它以创建具有必要定义和包含的文件,这样我就不必手动进入并包含每次添加它们。这揭示了意想不到的行为 - 最后一个类将任何文本添加两次。
\n\n在上面的代码示例中,我已经注释掉了我开始处理此问题的行,但是当我不注释掉它时,我会得到如下行为:
\n\ninput:\nclassmaker.exe test1 test2\n\noutput:\ntest1.h\ntest2.h\ntest1.cpp //(Which …Run Code Online (Sandbox Code Playgroud) 我正在解决项目欧拉问题,我早早就达到了死胡同 - 我几乎可以肯定我的代码是正确的,但我的答案并不正确.
具有最大乘积的1000位数字中的四个相邻数字是9×9×8×9 = 5832.
73167176531330624919225119674426574742355349194934 96983520312774506326239578318016984801869478851843 85861560789112949495459501737958331952853208805511 12540698747158523863050715693290963295227443043557 66896648950445244523161731856403098711121722383113 62229893423380308135336276614282806444486645238749 30358907296290491560440772390713810515859307960866 70172427121883998797908792274921901699720888093776 65727333001053367881220235421809751254540594752243 52584907711670556013604839586446706324415722155397 53697817977846174064955149290862569321978468622482 83972241375657056057490261407972968652414535100474 82166370484403199890008895243450658541227588666881 16427171479924442928230863465674813919123162824586 17866458359124566529476545682848912883142607690042 24219022671055626321111109370544217506941658960408 07198403850962455444362981230987879927244284909188 84580156166097919133875499200524063689912560717606 05886116467109405077541002256983155200055935729725 7163626956188267042825248360082 3257530420752963450
找到具有最大产品的1000位数字中的十三个相邻数字.这个产品有什么价值?
我的方法很简单 - 这是我在没有任何优化的情况下首先解决问题,只是为了看看我是否可以解决它:
#include <string>
#include <iostream>
#include <stdlib.h> // atol ASCII to Integer function
int main(){
std::string digits = "73167176531330624919225119674426574742355349194934";
digits += "96983520312774506326239578318016984801869478851843";
digits += "85861560789112949495459501737958331952853208805511";
digits += "12540698747158523863050715693290963295227443043557";
digits += "66896648950445244523161731856403098711121722383113";
digits += "62229893423380308135336276614282806444486645238749";
digits += "30358907296290491560440772390713810515859307960866";
digits += "70172427121883998797908792274921901699720888093776";
digits += "65727333001053367881220235421809751254540594752243";
digits += "52584907711670556013604839586446706324415722155397";
digits += "53697817977846174064955149290862569321978468622482";
digits …Run Code Online (Sandbox Code Playgroud) 我正在制作用于图像处理的三维数组 - X和Y维度,然后是第三维,因为每个像素没有一个值而是(bitsPerPixel/8)值.
我坦率地说我不是很精通C++,但相机的API严格来说是C++,所以我想在我出发之前先咨询一些技术人员然后问"这是对的吗?":
vector<vector<vector<int>>> mask(m_nSizeX, vector<vector<int>>(m_nSizeY, vector<int>(m_nBitsPerPixel / 8)));
Run Code Online (Sandbox Code Playgroud) c++ ×8
fstream ×2
vector ×2
c ×1
c# ×1
image ×1
intel-fpga ×1
nested-loops ×1
object ×1
powershell ×1
quartus ×1
string ×1
vhdl ×1
while-loop ×1
windows ×1
windows-7 ×1