我有一个支持UNICODE的Win32 C++应用程序.我有一个问题,我使用itoa()函数,但我得到一个编译错误,因为我传递一个TCHAR*作为参数,而不是一个char*.
我能做些什么才能让它发挥作用?
TCHAR buf[32];
itoa( taskState, buf, 10 );
Run Code Online (Sandbox Code Playgroud) 有没有更好的算法来做以下事情?
我试图生成50个可被7整除的随机数.然后我随机选择其中一个并返回该数字.
是否有更有效/更好的方法来随机生成可被7整除的数字?有没有更好的方法来编码/执行此操作?
unsigned int generateRandomNumberDivisibleByN( unsigned int n, unsigned int num=10 )
{
// Post: Generate many different random numbers that are divisible by n, then randomly select one of
// of those numbers to return.
unsigned int potentialNums[num];
for (int i=0, j=2; i<num; i++, j=rand()%INT_MAX)
{
potentialNums[i] = j*n;
}
return potentialNums[ rand()%num ]; // should this be rand()%(num-1) so it never returns an invalid array index?
}
Run Code Online (Sandbox Code Playgroud) 我只是想声明一个map迭代器但是我得到一个编译错误,说"预期;在它之前"
我相信这是因为我没有包含整个std命名空间(使用命名空间std;)但我故意不想包含所有这些.
我的代码:
#include <map>
#include <string>
template <class Object>
class Cont
{
public:
Cont() {}
Object* get( unsigned int nID )
{
std::map <unsigned int, Object*>::iterator it = m.begin(); // error here "expected ; before it" what is this error?
for ( ; it != m.end(); it++ )
{
if ( (*it).second->ID == nID ) { return (*it).second; }
}
return NULL;
}
std::map <unsigned int, Object*> m;
};
Run Code Online (Sandbox Code Playgroud)
我试过这个但是它不起作用:
std::map <unsigned int, Object*>::std::iterator it = m.begin();
Run Code Online (Sandbox Code Playgroud) 我想进行内核编程,主要是为了更多地了解它,而不是尝试创建自己的操作系统或任何东西.
但我很困惑,甚至我需要编程的语言来做这个,更不用说我可以使用什么IDE(如果有的话)和编译器?
我想尝试与Unix内核进行交互(以便Linux内核正确并且这是一个混合内核吗?)或Windows 7内核(那是混合内核不是吗?)旧版本的Windows是Monolithic? ).
如果我想与上面提到的内核进行交互,我应该使用哪种语言以及我可以下载哪些编译器(&IDE)来运行我的代码?
我是否会考虑使用c(我已经做了很多win32编程,所以我习惯于c&c ++)或汇编为此?你也知道任何与这些内核之一进行交互的教程吗?
哇我以为我知道我的C++,但这很奇怪
这个函数返回一个unsigned int所以我认为这意味着我永远不会得到一个负数返回吗?
该函数确定您前进或后退的时间.所以对我来说,我在澳大利亚,悉尼所以我是+10 GMT,这意味着我是UTC = LocalTime +( - 10).因此,GetTimeZoneInformation正确地确定我是-10.
但我的函数返回一个unsigned int所以不应该返回10而不是-10?
unsigned int getTimeZoneBias()
{
TIME_ZONE_INFORMATION tzInfo;
DWORD res = GetTimeZoneInformation( &tzInfo );
if ( res == TIME_ZONE_ID_INVALID )
{
return (INT_MAX/2);
}
return (unsigned int(tzInfo.Bias / 60)); // convert from minutes to hours
}
TCHAR ch[200];
_stprintf( ch, _T("A: %d\n"), getTimeZoneBias()); // this prints out A: -10
debugLog += _T("Bias: ") + tstring(ch) + _T("\r\n");
Run Code Online (Sandbox Code Playgroud) 编辑:在采取adivce后,我重新安排了参数和类型.但是当我现在调用digest()函数时,应用程序崩溃了吗?任何想法都出错了?
const std::string message = "to be encrypted";
unsigned char* hashMessage;
SHA256::getInstance()->digest( message, hashMessage ); // crash occurs here, what am I doing wrong?
printf("AFTER: n"); //, hashMessage); // line never reached
Run Code Online (Sandbox Code Playgroud)
我在C++中使用SHA256算法的开源实现.我的问题是理解如何传递我的字符串的unsigned char*版本,以便它可以被散列?
这是一个函数,它接受我的字符串的unsigned char*版本:
void SHA256::digest(const std::string &buf, unsigned char *dig) {
init();
update(reinterpret_cast<const unsigned char *>(buf.c_str()), static_cast<unsigned int>(buf.length()));
final();
digest(dig);
}
Run Code Online (Sandbox Code Playgroud)
如何将我的字符串(我想要散列)转换为unsigned char*?
当我打印出字符串内容时,我所做的以下代码会导致运行时错误:
const std::string hashOutput;
char message[] = "to be encrypted";
printf("BEFORE: %s bb\n", hashOutput.c_str());
SHA256::getInstance()->digest( hashOutput, reinterpret_cast<unsigned char *>(message) );
printf("AFTER: %s\n", hashOutput.c_str()); // …Run Code Online (Sandbox Code Playgroud) 我正在创建我的第一个DLL.我只有一个单例类和一个LRESULT CALLBACK函数,我将在DLL中创建并导入到我的一个项目中.我的MSVC++项目体系结构包含DLLMain.cpp文件(未更改),定义单例类和LRESULT函数的头文件以及实现LRESULT函数的cpp文件.
我的问题:该项目没有编译.我有2个编译错误,我不明白什么是完全错误以及如何解决它.
1> c:\ users\testcreatedll\dlltest.h(15):错误C2059:语法错误:'__ declspec(dllexport)'
1> c:\ users\testcreatedll\dlltest.h(39):错误C2065:'TestWndProc' :未声明的标识符
我的头文件:
#ifndef DLLTEST_H
#define DLLTEST_H
#include <windows.h>
// This is from a tutorial I am following
#ifdef _CLASSINDLL
#define CLASSINDLL_CLASS_DECL __declspec(dllexport)
#else
#define CLASSINDLL_CLASS_DECL __declspec(dllimport)
#endif
namespace MyTest
{
LRESULT CALLBACK CLASSINDLL_CLASS_DECL TestWndProc( HWND hwnd, UINT msg, LPARAM lParam, WPARAM wParam );
class CLASSINDLL_CLASS_DECL TestClass
{
// Singleton class
public:
static bool testStaticVar;
static TestClass* getInstance()
{
if ( instance == NULL ) { instance = new …Run Code Online (Sandbox Code Playgroud) 我试图找到哈希/加密(是HMAC?)算法的开源实现,如SHA256,SHA512,MD5.这是在C++/C中
我知道像Crypto ++这样的东西,但我发现它们很难包含在我的项目中,因为它们在DLL中,即我真的不知道如何在我的项目中包含和使用它们而且我认为它们使我的项目过于庞大.
我曾经发现一个开源SHA256头文件&.cpp实现(在谷歌上),但我不能在谷歌上重新绑定它.
任何人都知道任何或者可能是一个网站上有很多人?
我试图删除一行,其主键(列名=版本)例如是4.002000000000001.所以我说声明:
DELETE FROM tbl WHERE version=4.002;
Run Code Online (Sandbox Code Playgroud)
现在,这不会工作,因为没有版本等于4.002的行,只有版本等于4.002000000000001的行. 请不要问为什么我不将版本存储为DB中的4.002,因为我试图通过使列类型为DECIMAL(5,3)来实现,但它仍然存储来自Java的双精度为4.002000000000001.请不要问为什么我不说"...... WHERE version = 4.002000000000001;" 因为当我使用JDBC创建语句时,我无法控制java格式如何加倍(甚至使用DecimalFormat类).
那么有没有办法在SQLite3中向下舍入(floor函数)?那么我可以说"删除其FLOOR(版本)等于4.002的行?
我是一名C++程序员(使用Java查询SQL数据库,请不要问为什么:P)谁不熟悉复杂的SQL查询,所以这对我想做的事情是正确的:
DELETE FROM tbl WHERE ROUND(version, 0.5)=4.002;
Run Code Online (Sandbox Code Playgroud) 我的主题问题有点误导,我不想像std :: vector那样实现整个类,但我希望能够创建一个名为Container的类,所以我可以像这样声明它:
Container <unsigned int> c;
Run Code Online (Sandbox Code Playgroud)
这是我如何重载<>运算符...
class Container
{
private:
Container()
{
...
}
public:
void operator <>( unsigned int )
{
// what do I put here in the code?
// maybe I call the private constructor...
Container();
}
};
Run Code Online (Sandbox Code Playgroud) 我正在使用std :: wstring变量(C++语言),我正在尝试确定字符串的长度(以字符为单位).
函数.length和.size()给出的结果不是字符的长度(我想它们告诉我有多少个字符?).
那么有没有办法确定wstring的字符长度?