C++ 将double*与double进行比较

C++ 将double*与double进行比较,c++,windows,double,clipboard,C++,Windows,Double,Clipboard,首先我把剪贴板放在一个变量上,然后我想把这个变量和一个双精度变量进行比较 double * k; if (OpenClipboard(NULL) != FALSE) { HANDLE clip0 = GetClipboardData(CF_TEXT); if (clip0 != NULL) { k = reinterpret_cast < double * > (GlobalLock(clip0)); GlobalUnlock(cli

首先我把剪贴板放在一个变量上,然后我想把这个变量和一个双精度变量进行比较

double * k;

if (OpenClipboard(NULL) != FALSE) {
    HANDLE clip0 = GetClipboardData(CF_TEXT);
    if (clip0 != NULL) {
        k = reinterpret_cast < double * > (GlobalLock(clip0));
        GlobalUnlock(clip0);
    }
    CloseClipboard();
}
printf("%f", k);

double mini;
mini = 0.1258;

if (k > mini) {
    printf("ok");
} else {
    printf("non");
}

double*k;
if(OpenClipboard(NULL)!=FALSE){
HANDLE clip0=GetClipboardData(CF_TEXT);
if(clip0!=NULL){
k=重新解释铸造(GlobalLock(clip0));
GlobalUnlock(clip0);
}
CloseClipboard();
}
printf(“%f”,k);
双迷你;
mini=0.1258;
如果(k>mini){
printf(“ok”);
}否则{
printf(“非”);
}
但我得到了这个错误:[error]类型为'double*'和'double'的无效操作数转换为二进制'operator>'

问题在于:

k = reinterpret_cast < double * > (GlobalLock(clip0));
k=reinterpret_cast(GlobalLock(clip0));
用户不会将数字复制到剪贴板。他们复制文本。GlobalLock将向您返回指向剪贴板数据的文本内容的指针。你必须把它解析成一个数字

更好:

char* text = reinterpret_cast<char*>(GlobalLock(clip0));
double d = atof(text);
char*text=reinterpret_cast(GlobalLock(clip0));
双d=atof(文本);

谢谢您,但使用printf(“%s”,文本);我得到了剪贴板,而不是printf(“%f”,d);还有,请注意,如果文本中有任何前导空格,有非数字字符,或者根本无法解释为数字,
atof
将给出意外的结果。我得到了0.0000000,这意味着传递给
atof
的文本不是数字。