小编Kir*_*rov的帖子

C++解压缩gzip字节数组

这是完整的情况:我正在.tmx使用瓷砖的地图阅读器处理文件.大多数时候,tile都保存在一个base64字符串中,该字符串包含一个压缩的字节数组gzip.现在我可以读取压缩字节数组,但我不知道如何解压缩它.我读了一些关于zlib和的文档boost,但两者都是关于文件流而且非常复杂......

我对数据压缩领域很陌生,所以如果有人知道某种解决方案或一些有用的文档,我真的很感兴趣.

c++ compression gzip inflate

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

C套接字:套接字关闭时避免垃圾

我正在使用非阻塞套接字(fd_setsselect函数)编写服务器和客户端,一旦服务器关闭或关闭客户端套接字,客户端就会开始接收大量垃圾直到它崩溃.我已经被警告过,当工作时用select()插座将成为可读当连接被终止,但我怎么能知道

if( FD_ISSET( socket, &read ) ) 
{
} 
Run Code Online (Sandbox Code Playgroud)

如果原因只是常规数据或连接已结束?

非常感谢!

c sockets networking select winsock2

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

如何通过添加空格或其他字符来读取用户输入?

我想阅读用户输入,如下所示:

char *text  = new char[20] ;
cin >> text ;
Run Code Online (Sandbox Code Playgroud)

但如果用户输入"你好",我希望我的其他空字符填充空格,或者-像:

"hello------------------------"
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

c++ string

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

为什么在C中内置类型的初始化和赋值之间没有区别?

我正在读一本书,它说有初始化和赋值为内置型没有区别CC++,但喜欢的类型stringC++,也有区别.为什么?为什么内置类型没有区别C

c c++ initialization

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

两次声明纯虚函数是完全合法的(在层次结构中的两个类中)

问题的标题很清楚.这是我的例子:

class A
{
public:
    virtual void f() = 0;
};

class B: public A
{
public:
    virtual void f() = 0;
};

class C: public B
{
public:
    virtual void f() {}
};
Run Code Online (Sandbox Code Playgroud)

c++ inheritance pure-virtual

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

ofstream线程是否安全?

我正在开发一个程序,它使用多个std::ifstreams来读取二进制文件,std::ifstream每个线程一个.现在我需要知道,如果std::ofstream在Windows和Linux上是线程安全的,那么在同一个文件中写入.我只使用一个std::ofstream并使用多个线程.
我读通过利用每个线程和写作使用的输出文件的块不同的块seekp()write().目前它对我有用,但它是否对大文件有问题.

std::ofstream线程安全的?

c++ multithreading

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

如何链接特定的库(g ++; libstdc ++.so.5和libstdc ++.so.6)

一个简单的问题 - 有没有办法让g++链接器与特定的libstdc++库版本链接?我没有在gcc/ 的手册页中找到任何有用的东西g++,在这里也没有其他问题.

这是情况 - 我的应用程序使用一个特定的共享库,它是libstdc++.so.5用它构建的,我想安装并使用它RHEL5.所以,当我尝试在RHEL5机器上构建应用程序时,我收到了警告:

warning: libstdc++.so.5, needed by ..the_shared_library_.. may conflict with libstdc++.so.6
Run Code Online (Sandbox Code Playgroud)

安装compat-libstdc++rpm没有帮助,程序崩溃了析构函数std::string,因为无法解决.所以,在这RHEL5台机器上我有这个:

[root@xxx]# ll /usr/lib/libstd*  
-rwxr-xr-x 1 root root 259532 Aug 21 2006 /usr/lib/libstdc++-3-libc6.2-2-2.10.0.so  
lrwxrwxrwx 1 root root 31 Jul 28 19:35 /usr/lib/libstdc++-libc6.2-2.so.3 -> libstdc++-3-libc6.2-2-2.10.0.so  
lrwxrwxrwx 1 root root 18 Aug 24 15:08 /usr/lib/libstdc++.so.5 -> libstdc++.so.5.0.7  
-rwxr-xr-x 1 root root 733456 Aug 21 …
Run Code Online (Sandbox Code Playgroud)

linker g++ libstdc++

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

我可以确定char*参数解决了多少有效内存?

我有一个功能:

// string is a null-terminated char array. Replace all a in the string with b
void ReplaceCharInString(char *string, char a, char b)
{
// loop over the string char by char, to find all "a"s and replace them with "b"
}
Run Code Online (Sandbox Code Playgroud)

我在做防守编程.问题是客户端上的实现回复真正传递了一系列字符.如果传入单个字符的地址,程序肯定会遇到错误的状态(可能崩溃).我该如何检查并避免这种情况?(我知道如果我传入std :: string对象,问题就会消失)

c c++

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

如何根据字符串的值访问`struct'的成员?

我想通过使用字符串的值来访问结构中的成员:

struct hello_world
{
           char rate;
           char ssid;
};
Run Code Online (Sandbox Code Playgroud)

有一个varibale让我们说

char *string="ssid";
Run Code Online (Sandbox Code Playgroud)

我想使用此字符串的值来引用结构中的ssid成员hello_world.这可能吗?

c string struct

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

带和不带 -std=c99 的代码会产生不同的结果(UMAC AE 实现)

长话短说——我使用 Ted Krovetz 的实现来计算UMACUMAC AE加密 ( http://www.fastcrypto.org/ )。

当我用 编译我的代码(和/或中的测试umac.c)时-std=c99,计算出的结果UMAC与预期完全不同(并且是错误的)。当我删除这个选项时,一切都像魅力一样。

有什么想法可能导致这种情况吗?我可以做什么来检查发生了什么以及什么产生了不同的结果?


$ gcc --version
gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2

$ uname -a
xxx 3.13.0-43-generic #72-Ubuntu SMP .. x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

我不使用任何其他选项 - 只是使用和不使用-std=c99.


再说几句话:

我会尝试联系 Ted Krovetz 并向他询问这个问题(可能是一些错误或其他问题),但这不是重点。这个问题有点笼统,这个具体问题可以看作是一个例子。

我跑了valgrind——没什么特别的。添加-Wall并且-Wextra-什么也没有了。听起来像UB,但valgrind没有抱怨任何事情。

这种情况非常有趣,花了我很多天和头痛才明白,问题不在我的代码中(我使用这个实现来实现复杂的协议),而是在算法中,尤其是在这个选项中。所以我决定征求意见。

在 C 和 C++ 中都有效的代码在用每种语言编译时会产生不同的行为吗?根本不相关,因为我们在这里谈论的是同一种语言。
这种没有“-std=c99”的巨大 fprintf 速度差异很接近,但还不够。


编辑

这是我的测试结果和我所做的(源/标题刚刚下载,我没有更改任何内容): …

c gcc c99 compiler-options

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