小编Som*_*ken的帖子

StrToFloat在我的应用程序中引发错误,而不是在任何应用程序中

我的应用程序是在一个月前在Delphi 7中编写的.现在我想将float str值(如12.5)转换为扩展,但delphi会引发错误.

调试器异常通知

Project Educatee.exe引发异常类EConvertError,消息''12 .5'不是有效的浮点值'.流程停止了.使用"步骤"或"运行"继续.

相同的功能在新应用程序中正常工作

代码只是var x:Extended; 以及X:= strToFloat('12 .5')的任何地方;

delphi delphi-7

1
推荐指数
1
解决办法
1883
查看次数

Strtofloat/Floattostr转换

我遇到了StrToFloat常规问题.我在Windows Vista上运行Delphi 7,区域格式设置为德语(奥地利)

如果我运行以下代码 -

DecimalSeparator:='.';
anum:=StrToFloat('50.1123');
edt2.Text:=FloatToStr(anum);
Run Code Online (Sandbox Code Playgroud)

当我将字符串转换为浮点数anum变为50,1123时,当我将其转换回sting时它变为'50 .1123'

为什么当我将字符串转换为浮点数时,数字会以小数点而不是逗号作为小数点分隔符出现.

谢谢

科林

delphi

1
推荐指数
1
解决办法
2218
查看次数

来自未初始化变量的值来自何处?

声明我喜欢的局部变量时:

int i;
Run Code Online (Sandbox Code Playgroud)

并且您使用此变量,您将得到未定义的行为,因为我尚未初始化.但我持有一个值,一个"垃圾"值,这个值来自哪里?它来自记忆中的随机位置吗?

c++ variables garbage

1
推荐指数
1
解决办法
59
查看次数

编译器和操作系统如何处理C++中的const变量和const指针

我理解这些使用"const"的技巧的抽象功能是为了安全问题,不要让程序员无意中改变事物,或者不要故意搞乱事情,或者在同一个项目的不同程序员之间意外混淆(如果我错了,请纠正我).

不清楚的是:

  1. 如何通过编译器,操作系统(进程,线程),相关的硬件(CPU,RAM)等来实现这一承诺(不变) - 即"整个系统如何'标记'这个单元在这样的处理中"一种特殊的方式".
  2. 对于非常有效的应用程序,在(C/C++)代码中使用"const"是否会降低性能,并且它是否依赖于编译器(如果是 - 请说明它的作用)?

c++ pointers const

1
推荐指数
2
解决办法
233
查看次数

fwrite 从字符串中写入二进制数据

我想创建一个文件并将“A”写入其中(ascii 为 65 == 01000001)。奇怪的是,无论 的值是多少std::string binary,其中总是写有字母myfile.txtP。

    std::string binary = "01000001";
    std::string file = "myfile.txt";
    FILE* f;
    f = fopen(file.c_str(), "wb");      
    fwrite(&binary, 1, 1, f);     
    fclose(f);
Run Code Online (Sandbox Code Playgroud)

执行此代码后,我使用命令读取二进制数据xxd -b myfile,得到以下结果:

00000000:01010000

您发现这段代码有问题吗?

c++ fwrite

1
推荐指数
1
解决办法
2876
查看次数

C++ 11实验函数

每次我使用其中一个新类C++ 11提供类似chrono.h并使用GCC编译它时它警告我C++ 11函数仍然是实验性的,必须启用一个特殊标志才能使用.

它在2014年结束时写到这一点,为什么在至少3.5年后GCC仍将C++ 11标记为"实验性",经过这些年,C++ 11为我们提供的一些功能还没有实现?

如果是这样的话,怎么样?

代码:

#include <chrono>
#include <thread>
int main()
{
    std::this_thread::sleep_for(std::chrono::milliseconds(3000));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译行: g++ Source.cpp -o test.exe

GCC版本:g ++(x86_64-posix-seh-rev0,由MinGW-W64项目构建)4.9.2版权所有(C)2014 Free Software Foundation,Inc.

海湾合作委员会吐出: C:/Program Files/mingw-w64/x86_64-4.9.2-posix-seh-rt_v3-rev0/mingw64/x86_64-w64- mingw32/include/c++/bits/c++0x_warning.h:32:2: error: #error This file requires G compiler and library support for the ISO C++ 2011 standard. This support is curr ently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 comp iler options.

c++ c++11

0
推荐指数
1
解决办法
914
查看次数

WSASetSocketSecurity 缺失

Visual Studio 2015 告诉我它找不到WSASetSocketSecurity.
该dll存在并且还包含似乎没问题。

我的包括:

windows.h
stdio.h
Wincrypt.h
Ws2tcpip.h
mstcpip.h
iostream
winsock2.h
rpc.h
ntdsapi.h
tchar.h
pragma comment(lib,"ws2_32.lib")
pragma comment(lib,"fwpuclnt.lib")
pragma comment(lib,"ntdsapi.lib")
using namespace std;
Run Code Online (Sandbox Code Playgroud)

c++

0
推荐指数
1
解决办法
984
查看次数

如何手动崩溃c#代码

我在生产服务器上遇到了很多问题,但是我想在exe崩溃时用详细日志转储文件.

我找到了procdump工具.你能建议手动崩溃exe的代码c#,这样可以检查转储日志中获得的信息类型.

c#

0
推荐指数
1
解决办法
847
查看次数

bind的返回值不是int?

我正在尝试学习c/c ++套接字编程但是绑定函数正常工作或者没有返回它应该返回的内容,而不是"int"它返回"__bind"我不知道什么是错的,我已经搜索了该怎么做没有出来

请帮忙

Server::Server()
: sock_fd(0)
{
    // number used as index in to the vector of client fd
    num = 0;
    clino.reserve(10);
    clientfd.reserve(10);
   if( (sock_fd = socket(AF_INET,SOCK_STREAM,0) ) < 0)
   {
       perror("Server constructor : cannot open socekt");
   }
    bzero(&servaddr, sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons(TCP_PORT);
    servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
   //error returning __bind<int&, sockaddr*, unsigned long> 
   int b =  bind(sock_fd,(sockaddr *)&servaddr, sizeof(servaddr));



    //this bind function is acting up, dosent want to let me check for errors lol



    printf("printing..\n");
}




int …
Run Code Online (Sandbox Code Playgroud)

c++ sockets

0
推荐指数
1
解决办法
598
查看次数

如何在多线程c ++ 17程序中交换两个指针?

我有两个指针:pA和pB.它们指向两个大的哈希映射对象.当pB指向的哈希映射完全更新时,我想交换pB和pA.

在C++ 17中,如何快速交换它们并保证线程安全?原子?我是c ++ 17的新手.

c++ multithreading c++17

0
推荐指数
1
解决办法
342
查看次数

为什么每次在openmp代码中获得不同的输出?

每次我使用相同的参数执行cal()函数时,都会得到不同的输出。函数g()始终为相同的输入计算相同的结果。线程是否覆盖任何变量?

void cal(uint_fast64_t n) {
    Bint num = N(n);
    Bint total = 0, i, max_size(__UINT64_MAX__);
    for(i = 1; i <= num; i+= max_size){
        #pragma omp parallel shared(i,num,total)  
        { 
            int id = omp_get_thread_num();
            int numthreads = omp_get_num_threads();
            Bint sum(0), k;
            for(uint64_t j = id; (j < __UINT64_MAX__); j+=numthreads){
                k = i+j;
                if(k > num){
                    i = k;
                    break;
                }
                sum = sum + g(k);
            }
            #pragma omp critical
                total += sum;
        }
    }
    std::cout << total << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

c++ parallel-processing openmp

0
推荐指数
1
解决办法
75
查看次数

在数组中向后计数。[-1]

当我想改变数组的最后一个元素时,我总是使用[-1]作为最后一个元素。

#include <iostream>
using namespace std;
int main(){
    int arr[10]{};
    arr[0]=10;
    arr[-1]=100;
    cout<<arr[-1]<<endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

然后我的老师说:“ C ++不支持数组的这种行为。我应该使用arr [9]作为最后一个元素,而“ arr [-1] = 100”实际上将在其中一个元素之前的区域中存储1000。数组开始。这会导致崩溃,因为该值超出了数组的范围。” 有人可以解释为什么吗?

注意:我是python程序员。当我在列表中使用-1时,我在python中没有问题。C ++有不同的条件吗?

c++ arrays c++17

0
推荐指数
1
解决办法
83
查看次数

当NUL字符被定义为字符串的一部分时,为什么strlen()不计算终止NUL字符的字节?

我知道这strlen()不算NUL终止符。我真的知道这是事实。因此,这个问题不是关于为什么strlen()可能“大概”不返回正确的字符串长度的问题,在StackOverflow,此线程线程中已经在很多地方对此进行了很好的询问和回答。

因此,让我们继续我的问题:

在ISO / IEC 9899:1990(E)中;7.1.1。声明:

字符串是由第一个空字符终止并包括第一个空字符的连续字符序列。

原因是什么,为什么会strlen()偏离此既定标准,并且不“希望”接受带有 NUL终止字符的字符串?

为什么?

c c++ string strlen nul

-2
推荐指数
1
解决办法
115
查看次数