小编Eli*_*ior的帖子

tellg()函数给出错误的文件大小?

我做了一个示例项目,将文件读入缓冲区.当我使用tellg()函数时,它给我一个比读取函数实际读取的值更大的值.我认为有一个错误.

这是我的代码:

编辑:

void read_file (const char* name, int *size , char*& buffer)
{
  ifstream file;

  file.open(name,ios::in|ios::binary);
  *size = 0;
  if (file.is_open())
  {
    // get length of file
    file.seekg(0,std::ios_base::end);
    int length = *size = file.tellg();
    file.seekg(0,std::ios_base::beg);

    // allocate buffer in size of file
    buffer = new char[length];

    // read
    file.read(buffer,length);
    cout << file.gcount() << endl;
   }
   file.close();
}
Run Code Online (Sandbox Code Playgroud)

主要:

void main()
{
  int size = 0;
  char* buffer = NULL;
  read_file("File.txt",&size,buffer);

  for (int i = 0; i < size; i++) …
Run Code Online (Sandbox Code Playgroud)

c++ file ifstream

23
推荐指数
2
解决办法
3万
查看次数

Android O - FLAG_SHOW_WHEN_LOCKED已弃用

我正在将我的应用程序定位到Android O.在我的应用程序中,我有一个作业服务,显示所有其他应用程序的窗口,因此当它触发时,即使屏幕关闭和解锁并打开它,也需要显示此窗口.我已经在preior Android版本中实现了这种行为,但是在Android O中它没有像我预期的那样工作.

我已经读过我需要使用该标志TYPE_APPLICATION_OVERLAY<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>在清单文件中添加了权限.

所以它在屏幕打开时工作正常,但是当屏幕关闭时我注意到它没有打开屏幕,当我转动屏幕时,我看到窗口是在其他应用程序之上创建的.

所以我的问题是因为旗帜FLAG_TURN_SCREEN_ON并且FLAG_SHOW_WHEN_LOCKED在Android API 27中被弃用了,有什么替代方法呢?

这是我目前的代码:

private void showView()
{
    if (!wakeLockAcquired)
    {
        wakeLock.acquire();
        wakeLockAquired = true;
    }

    windowManager = (WindowManager)context.getSystemService(WINDOW_SERVICE);

    final WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams(
            ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT, 0, 0,
            WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY
            ,
            WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
                    | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
                    | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
                    | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON ,
            PixelFormat.RGBA_8888);

    RelativeLayout layout = buildView();
    windowManager.addView(layout, layoutParams);
    windowManager.updateViewLayout(layout, layoutParams);
}
Run Code Online (Sandbox Code Playgroud)

笔记:

  • buildView是一个返回relativeLayout的函数,在这个函数中我是动态添加内容的(TextView,ImageView等).
  • wakeLockAcquired是一个布尔成员,在视图被销毁时设置为false.

android android-windowmanager android-8.0-oreo

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

获取WhatsApp消息

是否有可能创建一个侦听器来从android中的whatsApp获取消息?
我的意思是你要broadcastReceiver在Android中收听传入短信...

该东西是否需要任何API,或者它是否合法或我需要获得任何许可whatsApp

android whatsapp

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

使用本地数据库创建 winForms 安装程序

我有一个 Winforms 应用程序(跳棋游戏),它有一个本地数据库(使用 SQL Server Express)来保存注册玩家及其分数。

我正在尝试通过本教程为此应用程序创建一个安装程序

一切都很好,但是当我尝试添加播放器时,我收到一条 SQL 错误,指出未找到数据库。那么如何将本地数据库(.mdf文件)添加到安装程序中?

.net c# installation sql-server-express winforms

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

MPI中每个进程的随机数

我正在使用MPICH2来实现"Odd-Even"排序.我做了实现但是当我随机化到每个进程的值时,相同的数字被随机化到所有进程.

这是每个进程的代码,每个进程随机化他的值.

int main(int argc,char *argv[])
{
    int  nameLen, numProcs, myID;
    char processorName[MPI_MAX_PROCESSOR_NAME];
    int myValue;

    MPI_Init(&argc,&argv);
    MPI_Comm_rank(MPI_COMM_WORLD,&myID);
    MPI_Comm_size(MPI_COMM_WORLD,&numProcs);    
    MPI_Get_processor_name(processorName,&nameLen);
    MPI_Status status;

    srand((unsigned)time(NULL));
    myValue = rand()%30+1; 

    cout << "myID: " << myID << " value: " << myValue<<endl;
    MPI_Finalize();

    return 0;
 }
Run Code Online (Sandbox Code Playgroud)

为什么每个过程都获得相同的价值?

编辑:谢谢你的答案:)

我换了线

 srand((unsigned)time(NULL));
Run Code Online (Sandbox Code Playgroud)

 srand((unsigned)time(NULL)+myID*numProcs + nameLen);
Run Code Online (Sandbox Code Playgroud)

它为每个进程提供不同的值:)

c++ random mpi mpich

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

Android 中的一项服务多项活动

我有一项服务和 3 项活动。该服务在第一个活动中启动。现在,当我转到第二个活动并按下某个按钮时,我想向服务发送数据。

因此,在第二个活动中,在单击侦听器中,我执行了以下操作:

 Intent service = new Intent(MyService.class.getName()); 
 service.putExtra("dataToSend",data.toString());
 startService(service);
Run Code Online (Sandbox Code Playgroud)

但是服务中的onStartCommand方法没有被调用..

此外,我想创建此服务以处理多个活动。我的意思是每个活动都能够向该服务发送数据并从中获取数据。

service android android-activity

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

Android设置edittext max limit(以字节为单位)

在android中,我想要一个限制为255字节的编辑文本,所以当用户试图超过这个限制时,它不会让他写.

我看到的所有过滤器都使用字符限制,即使在xml布局中也是如此.

那么如何设置过滤器到edittext以限制为255个字节?

android android-edittext

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

未触发Android Nougat PhoneStateListener

在Android(目标25)中,我有一个后台服务,在onCreate函数中,我初始化了一个手机状态监听器.它适用于Nougat之前的Android版本,但在Nougat中它不起作用,即使权限被授予.

public class Service extends IntentService
{
    class PhoneListener extends PhoneStateListener
    {
       String TAG = getClass().getName();
       @Override
       public void onCallStateChanged(int state, String incomingNumber) 
       {
           super.onCallStateChanged(state, incomingNumber);
           switch (state)
           {
               case TelephonyManager.CALL_STATE_IDLE:
                Log.d(TAG,"IDLE" );
               break;
               case TelephonyManager.CALL_STATE_OFFHOOK:
                Log.d(TAG,"OFFHOOK");
               break;
               case TelephonyManager.CALL_STATE_RINGING:
                Log.d(TAG,"RINGING");
               break;
           }
       }
   }

   public Service ()
   {
       super("ChatService");
   }
   public Service(String name)
   {
       super(name);
   }

   @Override
   public void onCreate()
   {
       super.onCreate();
       TelephonyManager tm = (TelephonyManager)getApplicationContext().getSystemService(TELEPHONY_SERVICE);
       PhoneListener listener = new PhoneListener();
       tm.listen(listener,PhoneStateListener.LISTEN_CALL_STATE);
   }
}
Run Code Online (Sandbox Code Playgroud)

我不知道是什么问题,看起来电话管理器没有注册,因此没有触发onCallStateChanged.我的猜测之一是在Android M上引入的Doze功能,但仍然......即使手机未找到"工作中",此代码在Android 6上运行正常

android telephonymanager android-doze android-7.0-nougat android-7.1-nougat

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

Firebase FCM,同一 Firebase 项目中的多个应用程序

我有一个 Firebase 项目,在其中注册了多个应用程序。现在我想添加推送通知,并且我希望能够区分哪个应用程序应该被推送通知唤醒。

在 google-services.json 文件中,我看到所有应用程序的current keyinapi key部分具有相同的值,我理解这是因为我在同一个 Firebase 项目中注册了应用程序。

我还阅读了有关 SERVER_KEY 的信息,并看到有一个添加 SERVER KEY 的选项。我可以添加多个服务器密钥并在我的服务器中使用它们,以便发送正确应用程序的推送通知吗?

或者是否有任何其他解决方案允许我将应用程序注册在同一个 Firebase 项目中,但区分哪个应用程序应通过推送通知唤醒?

android firebase firebase-cloud-messaging

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

在unity3d中创建本地数据库

我正计划在Unity3D中开发一款游戏.我没有选择yed,如果它将是javascript,c#script或boo,作为统一IDE提供的开发语言.

在我的游戏中,我需要存储游戏状态:用户名,关卡,游戏移动,当前状态,点数以及应该保存的所有内容.我想让用户在某个特定的时间内保存游戏,并且假设在几个小时之后,当他想继续游戏时,他将能够从他停止的点开始加载游戏.

所以我知道也许我需要2个表,一个用于用户数据,另一个表用于每个游戏 - 保存游戏状态.

但我想知道是否有任何选项可以将本地数据库添加到Unity?

我看到这个教程描述了如何序列化对象以保存游戏状态..但我不知道这是否能满足我的游戏需求

database unity-game-engine

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