这是完整的情况:我正在.tmx使用瓷砖的地图阅读器处理文件.大多数时候,tile都保存在一个base64字符串中,该字符串包含一个压缩的字节数组gzip.现在我可以读取压缩字节数组,但我不知道如何解压缩它.我读了一些关于zlib和的文档boost,但两者都是关于文件流而且非常复杂......
我对数据压缩领域很陌生,所以如果有人知道某种解决方案或一些有用的文档,我真的很感兴趣.
我正在使用非阻塞套接字(fd_sets和select函数)编写服务器和客户端,一旦服务器关闭或关闭客户端套接字,客户端就会开始接收大量垃圾直到它崩溃.我已经被警告过,当工作时用select()插座将成为可读当连接被终止,但我怎么能知道
if( FD_ISSET( socket, &read ) )
{
}
Run Code Online (Sandbox Code Playgroud)
如果原因只是常规数据或连接已结束?
非常感谢!
我想阅读用户输入,如下所示:
char *text = new char[20] ;
cin >> text ;
Run Code Online (Sandbox Code Playgroud)
但如果用户输入"你好",我希望我的其他空字符填充空格,或者-像:
"hello------------------------"
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我正在读一本书,它说有初始化和赋值为内置型没有区别C或C++,但喜欢的类型string中C++,也有区别.为什么?为什么内置类型没有区别C?
问题的标题很清楚.这是我的例子:
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) 我正在开发一个程序,它使用多个std::ifstreams来读取二进制文件,std::ifstream每个线程一个.现在我需要知道,如果std::ofstream在Windows和Linux上是线程安全的,那么在同一个文件中写入.我只使用一个std::ofstream并使用多个线程.
我读通过利用每个线程和写作使用的输出文件的块不同的块seekp()和write().目前它对我有用,但它是否对大文件有问题.
是std::ofstream线程安全的?
一个简单的问题 - 有没有办法让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) 我有一个功能:
// 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对象,问题就会消失)
我想通过使用字符串的值来访问结构中的成员:
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.这可能吗?
长话短说——我使用 Ted Krovetz 的实现来计算UMAC和UMAC 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++ ×6
c ×5
string ×2
c99 ×1
compression ×1
g++ ×1
gcc ×1
gzip ×1
inflate ×1
inheritance ×1
libstdc++ ×1
linker ×1
networking ×1
pure-virtual ×1
select ×1
sockets ×1
struct ×1
winsock2 ×1