在本地函数中命名临时变量的标准方法是什么?让我举一个例子说明我在做什么.我得到一个结构的指针,所以我想在本地存储其成员之一,以避免被引用,然后任何修改分配回指针.
更具体一点:
struct Foo
{
double m_d;
};
void function (Foo* f)
{
double tmp=f->m_d;
/***Other stuff***/
f->m_d=tmp;
}
Run Code Online (Sandbox Code Playgroud)
我不喜欢tmp.如果我在一个函数中有很多它们,它们只会增加混乱.
谢谢
我创建了16个Direct3D设备,大小约为320x200像素.我每40毫秒在一个单独的线程中为每个设备调用IDirect3DDevice9 :: Present.如果显示系统工具提示或开始菜单,则在使用Windows XP和集成英特尔GMA945图形的笔记本电脑上,部分设备不会更新.IDirect3DDevice9 :: Present当时没有返回任何错误代码,在程序中一切看起来都很好,但用户可以看到移动几个设备冻结.可能是什么原因?
这在具有相同硬件的Windows 7和在具有不同硬件的Windows XP上工作正常,因此仅与此组合有关的问题.我应该支持这一点,因为我的客户正在使用硬件和操作系统的这种组合.MSDN没有说我应该只创建一个D3D设备(至少我找不到它)所以问题应该在其他地方.
我想要找到的是,可能有一些标志组合可以解决我的问题.目前我使用以下内容:
D3DPRESENT_PARAMETERS param = {};
param.Windowed = TRUE;
param.SwapEffect = D3DSWAPEFFECT_DISCARD;
param.hDeviceWindow = GetSafeHwnd();
param.BackBufferCount = 1;
param.BackBufferFormat = D3DFMT_UNKNOWN;
param.BackBufferWidth = m_szDevice.Width;
param.BackBufferHeight = m_szDevice.Height;
param.MultiSampleType = D3DMULTISAMPLE_NONMASKABLE;
param.Flags = D3DPRESENTFLAG_VIDEO;
param.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
param.MultiSampleType = D3DMULTISAMPLE_NONE;
param.MultiSampleQuality = 0;
Run Code Online (Sandbox Code Playgroud) 我的问题涉及继承自ifstream的Bifstream的以下成员函数.Read需要一个char指针.我给它(char*)和目标.target是一个引用,所以我给它的是对int的引用的引用.为什么这样做?
bool cBifstream::ReadInt( int& target ){
if( !this->is_open() ){
return false;
}
this->read( (char*)&target, sizeof(int) );
}
Run Code Online (Sandbox Code Playgroud)
这是我使用的其他工作代码的片段.
int size;
is.read((char*)&size, sizeof(int));
Run Code Online (Sandbox Code Playgroud)
语法是相同的,但这次变量是一个int而不是对int的引用.
目标声明:
cBifstream a("test2");
int b;
a.ReadInt(b);
Run Code Online (Sandbox Code Playgroud)
编辑:谢谢你的回复.我还是不明白一件事.
this->read( (char*)target, sizeof(int) ); (all i did here was remove the ampersand)
Run Code Online (Sandbox Code Playgroud)
此更改导致我的程序崩溃.但是target是对int的引用,所以上面应该有效
int size;
is.read((char*)&size, sizeof(int));
Run Code Online (Sandbox Code Playgroud)
作品.
我需要加密密码并将其存储在数据库中.我添加了一个代码"$ newpass = md5($ pass_word);" 在PHP文件中.但仍然无法正常工作
<?php
$hostname = "xxxx";
$username = "xxxx";
$password = "xxxx";
$dbName = "xxxx";
$user_name='';
$pass_word='';
$email='';
$errormsg='';
$subject='';
$message='';
$newpass='';
$conn = mysql_connect($hostname,$username,$password) or die(mysql_error());
mysql_select_db($dbName);
if(isset($_POST["submit"]))
{
$user_name=$_POST['usr'];
$address1=$_POST['addr1'];
$address2=$_POST['addr2'];
$pass_word=$_POST['pswd'];
$newpass= md5($pass_word);
$email=$_POST['email'];
if(empty( $user_name))
{
$errormsg='<br>enter the name S';
}
if(trim($address1)=="")
{
$errormsg="<br>entre the address1 S";
//echo $errormsg;
}
if(trim($address2)=="")
{
$errormsg="<br>entre the address2 S";
//echo $errormsg;
}
if(trim($pass_word)=="")
{
$errormsg="<br>entre the password S";
// echo $errormsg;
}
if(trim($email)=="")
{
$errormsg="<br> …Run Code Online (Sandbox Code Playgroud) 我只是为一个角色分配一些内存,然后想做一些指针算法.在这种情况下,我想将'\ x0a'写入字节32,如下所示:
#define HDR_SIZE 32
int size = 52;
unsigned char *readXPacket = (unsigned char *) malloc (size * sizeof (unsigned char));
*readXPacket + HDR_SIZE = '\x0a';
Run Code Online (Sandbox Code Playgroud)
当我尝试这样做时,我收到以下错误消息:赋值中的非值.谁知道这里有什么问题?
谢谢
我想开发一个小工具,用于打开XML文件并自动启动Excel.可以非常方便地将excel文件保存为.xls格式的用户的好处.
我的开发IDE:Windows XP专业版和Visual Studio 2005.
该工具将在Windows 2000和Excel 2000上运行.并且没有安装.net框架.
这意味着我不能用C#编码.我的选择是C++.
我想知道是否有一种方法只在头文件.h上放置受保护和公共的东西,以及编译单元.cpp中的所有私有东西我需要这个,因为该库将被其他人使用,而我不希望复制和编辑所有.h文件以删除私有声明和实现.我试过但得到了重复声明错误
另一个问题是关于私有静态的东西我可以在头文件中声明它们并在.cpp单元上实现它们吗?一个私有变量和一个公共的get方法我试过但是无法在单元上实现该方法,它只适用于头上的声明和实现
[] s,乔
我有以下类型:
struct X { int x; X( int val ) : x(val) {} };
struct X2 { int x2; X2() : x2() {} };
typedef std::pair<X, X2> pair_t;
typedef std::vector<pair_t> pairs_vec_t;
typedef std::vector<X> X_vec_t;
Run Code Online (Sandbox Code Playgroud)
我需要初始化pairs_vec_t带有值的实例X_vec_t.我使用以下代码,它按预期工作:
int main()
{
pairs_vec_t ps;
X_vec_t xs; // this is not empty in the production code
ps.reserve( xs.size() );
{ // I want to change this block to one line code.
struct get_pair {
pair_t operator()( const X& value ) { …Run Code Online (Sandbox Code Playgroud) 我有这个方法接收一个TCHAR szFileName[]变量的路径,其中包含类似的东西C:\app\...\Failed\
我想对它进行排序,以便我可以验证该路径上最后一个文件夹的名称是否实际上是"失败"
我认为使用这样的东西会起作用:
std::wstring Path = szFileName;
string dirpath2;
dirpath2 = Path.substr(0,5);
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
错误6错误C2679:二进制'=':找不到运算符,它采用类型为'std :: basic_string <_Elem,_Traits,_Ax>'的右手操作数(或者没有可接受的转换)
毋庸置疑,我对C++很新,而且我一直在寻找答案,但我没有运气,所以任何帮助都会受到赞赏:)
#include <iostream>
using namespace std;
int myFunc (unsigned short int x );
int main ()
{
unsigned short int x, y;
x=7;
y = myFunc(x);
std::cout << "x:" << x << "y: " << y << "\n";
return 0;
}
int myFunc (unsigned short int x )
{
return (4 * x );
}
Run Code Online (Sandbox Code Playgroud)
现在这个^代码工作,但当我改变
y = myFunc(x);
Run Code Online (Sandbox Code Playgroud)
成
y = myFunc(int);
Run Code Online (Sandbox Code Playgroud)
它将不再有用,为什么呢?