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
的文本不是数字。