小编Bil*_*hon的帖子

在C++中将uint64转换为字符串

将uint64值转换为标准C++字符串的最简单方法是什么?我从字符串中检出了assign方法,并且找不到任何接受uint64(8字节)作为参数的人.

我怎样才能做到这一点?

谢谢

c++ string uint64

6
推荐指数
4
解决办法
2万
查看次数

在Android中注册C2DM的问题

我正在尝试测试C2DM框架.我几天前收到了确认电子邮件,然后尝试创建一个可以注册的客户端.为此,我按照本教程中描述的步骤创建了一个简单的客户端:http://code.google.com/intl/es-419/android/c2dm/index.html.

Android清单文件包含以下代码:

<permission android:name="com.bilthon.ufrj.permission.C2D_MESSAGE" android:protectionLevel="signature" />
<uses-permission android:name="com.bilthon.ufrj.permission.C2D_MESSAGE" />

<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

<uses-permission android:name="android.permission.INTERNET"/>

<receiver android:name=".C2DMReceiver" android:permission="com.google.android.c2dm.permission.SEND">

<intent-filter>
   <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
   <category android:name="com.bilthon.ufrj" />
</intent-filter>

<intent-filter>
   <action android:name="com.google.android.c2dm.intent.RECEIVE" />
   <category android:name="com.bilthon.ufrj" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)

然后,程序启动时启动的主要活动具有以下代码:

Intent registrationIntent = new Intent("com.google.android.c2dm.intent.REGISTER");
registrationIntent.putExtra("app", PendingIntent.getBroadcast(this, 0, new Intent(), 0)); // boilerplate
registrationIntent.putExtra("sender","mytestemail@gmail.com");
Log.d("WelcomeScreen","mytestemail@gmail.com");
startService(registrationIntent);
Run Code Online (Sandbox Code Playgroud)

我还在运行我的客户端的AVD上注册了一个谷歌帐户,因为他们说这是必需的.但问题是我不能让广播接收器"醒来".我不知道会出现什么问题.通过分析日志,我可以看到注册意图已经创建并且显然正确使用,但是接收器代码从未被执行过,可能出错了什么?

在此先感谢尼尔森

android android-manifest android-c2dm

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

RTMP_Write函数使用

我正在尝试使用librtmp库,它可以很好地拉出流.但是现在我正在尝试发布一个流,为此我相信我必须使用RTMP_Write函数.

我在这里要完成的是一个简单的c ++程序,它将从文件读取并尝试将流推送到crtmp服务器.连接和流创建是可以的,但我对使用RTMP_Write感到很困惑.

这是我做的:

int Upload(RTMP * rtmp, FILE * file){
        int nRead = 0;
        unsigned int nWrite = 0;
        int diff = 0;
        int bufferSize = 64 * 1024;
        int byteSum = 0;
        int count  = 0;
        char * buffer;
        buffer = (char *) malloc(bufferSize);
        do{
                nRead = fread(buffer+diff,1,bufferSize-diff,file);
                if(nRead != bufferSize){
                        if(feof(file)){
                                RTMP_LogPrintf("End of file reached!\n");
                                break;
                        }else if(ferror(file)){
                                RTMP_LogPrintf("Error reading from file stream detected\n");
                                break;
                        }
                }
                count += 1;
                byteSum += nRead;
                RTMP_LogPrintf("Read %d from file, …
Run Code Online (Sandbox Code Playgroud)

flv publish rtmp rtmpd

6
推荐指数
0
解决办法
1424
查看次数

不是c ++中的迭代器是一种指针吗?

好的这次我决定使用STL制作一个列表.我需要为每个客户端创建一个专用的TCP套接字.所以每当我有一个连接时,我实例化一个套接字并在列表中添加一个指向它的指针.

list<MyTcp*> SocketList;  //This is the list of pointers to sockets
list<MyTcp*>::iterator it;  //An iterator to the list of pointers to TCP sockets.
Run Code Online (Sandbox Code Playgroud)

将一个新指针放到套接字很容易,但是现在每次连接结束时我应该断开套接字并删除指针,这样我就不会有大量的内存泄漏,对吧?好吧..我以为我做得好这个:

it=SocketList.begin();
while( it != SocketList.end() ){
    if((*it)->getClientId() == id){
    pSocket = it; //    <-------------- compiler complains at this line
    SocketList.remove(pSocket);
    pSocket->Disconnect();
    delete pSocket;
    break;
    }
}
Run Code Online (Sandbox Code Playgroud)

但编译器这样说:

 error: invalid cast from type ‘std::_List_iterator<MyTcp*>’ to type ‘MyTcp*’
Run Code Online (Sandbox Code Playgroud)

有人可以帮我吗?我以为我做的事情是对的,在任何给定的时间只是指向集合中的一个元素不是迭代器?我该怎么解决?

c++ pointers iterator list

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

insmod无法插入一个非常简单的模块

我正在尝试编译并将模块插入到我的内核中,但我一直收到此错误:

insmod: error inserting 'hello.ko': -1 Invalid module format
Run Code Online (Sandbox Code Playgroud)

我在这里按照本教程中描述的步骤操作:http://www.cyberciti.biz/tips/compiling-linux-kernel-module.html.一切似乎都有意义和有效.我得到了我的示例模块编译但是有一个警告可能是导致此事失败的重要原因.警告是这样的:

警告:缺少符号版本转储/usr/src/linux-3.0.0/Module.symvers; 模块将没有依赖关系和modversions.

我坦率地不知道为什么Module.symvers文件不存在.该/usr/src/linux-3.0.0目录及其所有内容都是我创造我dowloaded使用此命令的源后:

apt-get source linux-image - $(uname -r)

这是事实,教程,我没有遵守的唯一步骤,因为我无法找到我的内核的确切来源(3.0.0-32-通用),并认为该资质的工具将那种给我看.

而且我顺便在64位机器上运行Ubuntu,这是uname -a输出:

Linux的维加3.0.0-32泛型#51,Ubuntu的SMP周四03月21日十五时五十分59秒UTC 2013 x86_64的x86_64的x86_64的GNU/Linux的

有关下一步尝试的建议吗?任何推荐的阅读?

PS1.经过一些研究后,我确认我正在运行3.0.0-32-generic.update-grub返回:

Found linux image: /boot/vmlinuz-3.0.0-32-generic
Run Code Online (Sandbox Code Playgroud)

但是在发出sudo make oldconfig并检查生成的.config文件后,我得到了这个有趣的行:

CONFIG_VERSION_SIGNATURE="Ubuntu 3.0.0-32.51-generic 3.0.69"
Run Code Online (Sandbox Code Playgroud)

这有资格作为错配吗?

PS2.dmesg输出:

[    5.869900] ADDRCONF(NETDEV_UP): eth1: link is not ready
[    6.144304] EXT4-fs (dm-1): re-mounted. Opts: errors=remount-ro
[    6.368936] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null)
[    6.433919] vesafb: mode is 640x480x32, linelength=2560, pages=0 …
Run Code Online (Sandbox Code Playgroud)

ubuntu kernel-module linux-kernel

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

切换具有应映射到枚举类型的整数值的大小写

嗯..似乎Java中的枚举类比它们的C或C++对应物更加通用,但对于这个特定的代码构造,我试图设备它们的对象性质只是给我带来麻烦.

我所拥有的是这样的:

public static enum ServerResponse{
    SIGN_UP_SUCESS(0),
    INTERNAL_SERVER_ERROR(1),
    EMAIL_ALREADY_REGISTERED(2),
    SIGNIN_FAILED(3),
    WAITING_CONFIRMATION(4),
    SIGNIN_SUCESS(5),
    BLOCKED_ACCOUNT(6),
    INACTIVE_ACCOUNT(7);

    private final int numcode;
    ServerResponse(int num){
        numcode = num;
    }

    final int numCode(){ return numcode;}
}
Run Code Online (Sandbox Code Playgroud)

您现在看到问题出现了,因为服务器给了我一个数字响应,我无法直接与枚举类进行比较.我的想法是创建numCode()方法,该方法将返回实例化枚举的整数属性.我试着这样做:

int SERVER_RESPONSE = ServerInterface.sendRequest();

switch(SERVER_RESPONSE){
    ServerInterface.ServerResponse.BLOCKED_ACCOUNT.numCode():
        //Do something
    ServerInterface.ServerResponse.INTERNAL_SERVER_ERROR:
}
Run Code Online (Sandbox Code Playgroud)

但正如你可以想象的那样,上述方法都没有奏效.第一个案例比较抱怨"案例表达式必须是常量表达式",第二种类型只是给我一个类型不匹配错误.

那我该怎么做呢?那么,现在我正在做这样的事情:

 for(ServerResponse response : ServerResponse.values()){
        if(response.numCode() == SERVER_RESPONSE){
               return response;
        }
 }
Run Code Online (Sandbox Code Playgroud)

但它很丑..我想使用一个switch语句,这就是enum类型的全部目的吗?那么,我在这里错过了什么?

谢谢

纳尔逊

java enums switch-statement

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

奇怪的构造函数

好吧,我在这里会很简单,我只是在c ++中有一段代码,我不确定我是否真的理解并需要一些帮助.

好的,为了简化,我只想说我有一个这样定义的类:(真正的类有点复杂,但这才是重要的)

class myClass : public Runnable {
    Semaphore *m_pMySemaphore;
    __Queue<Requests> *m_pQueue;
    Request m_Request;
    VetorSlotBuffer *m_vetorSlotBuffer;
}
Run Code Online (Sandbox Code Playgroud)

到目前为止没有任何问题,myClass只是一个普通的类,它有3个成员实际上是指向其他类的指针和类Request的对象,这些类的实现对我的观点来说并不重要.

然后当这个人为myClass实现构造函数时,他或她这样做了:

myClass::myClass() : m_pMySemaphore(0), m_pQueue(0), m_vetorSlotBuffer(0) { }

很明显,这三个变量被构造函数处理得因为它们是指针,我是对的吗?但那是什么样的语法?我通过这样做将指针设置为null吗?我已经看过一些c ++,但从来没有找到类似的东西.

其次,在构造函数声明之后处理":"的是什么?我见过但从未花时间去调查.这是内心阶级还是什么?

非常感谢你提前.尼尔森R.佩雷斯

c++ syntax constructor definition

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

如何制作Gridview滚动的背景

我需要为我正在开发的Android应用程序设计某种书架式视图.我想要使​​用的第一件事是gridview,其中每个项目都是书架上的书.我已经完成了艺术工作,在完成服务器端连接后,我最终得到了一个装满书籍的漂亮书架.

但是,只要我获得的书籍数量超过了屏幕所能容纳的数量,GridView就可以向下滚动以查看更多书籍,这是我期望的行为.我没想到的是背景图像留在一个地方,而包含书籍的网格视图向上滑动.

所以这是一个广泛的问题,有没有办法用Gridview实现我想要的东西?或者我应该更好地开始寻找其他替代方案?

android gridview

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

我应该如何正确地将社交媒体SSO与我的自定义登录服务集成?

我正在尝试将移动应用程序的现有登录系统与一些社交媒体登录解决方案集成.我成功地将Facebook和谷歌+登录与我的应用程序集成,我达到了用户登录的地步,我可以获取他们的社交信息.

但是现在我想知道哪个是最好的方法,以便将决定使用社交媒体帐户的用户与我的本机登录系统集成.我应该使用他们的电子邮件帐户登录,也许在服务器端生成密码?或者也许使用oauth令牌而不是密码?

我需要跟踪我的用户,甚至那些没有正式填写注册表的用户.那么我应该放置什么而不是电子邮件+密码?

android facebook single-sign-on google-plus

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