小编use*_*458的帖子

C中的数组增量运算符

我不明白以下代码的结果:

#include <stdio.h>
#include <conio.h>
int main()
{
   int a[4]={1, 3, 5, 6};
   //suppose a is stored at location 2010
   printf("%d\n", a + 2);
   printf("%d", a++);
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么第二个printf函数会产生以下错误?

error: lvalue required as increment operand

c pointers post-increment

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

使用变量定义数组的大小

这在C语言中有效吗?

#include <stdio.h>
int main()
{
  int i = 5;
  int a[i];     // Compiler doesn't give error here. Why?
  printf("%d",sizeof(a));  //prints 5 * 4 =20. 4 is the size of integer datatype.
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译器不会在声明中给出错误int a[i];.我不是一个常数,那么它怎么能成功编译?是因为我使用的是gcc编译器吗?是否允许在C++中使用?

c c++ arrays

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

如何在Qt中检测全局键序列?

我想检测是否按下了一个键序列,并希望在Qt中对该事件执行某个任务.目前,我可以检测某些小部件的按键,但如何检测全局按键.全局我的意思是,即使应用程序被最小化或隐藏,它也应该检测按键.

我尝试eventFilter为应用程序制作一个,首先QObject::eventFilter像这样重载:

bool GlobalEventFilter::eventFilter(QObject *Object, QEvent *Event)
{
  if (Event->type() == QEvent::KeyPress)
  {
    QKeyEvent *KeyEvent = (QKeyEvent*)Event;

    switch(KeyEvent->key())
    {
      case Qt::Key_F1:
        cout<<"F1 press detected"<<endl;
        return true;
      default:
        break;
    }
  }
  return QObject::eventFilter(Object,Event);
}
Run Code Online (Sandbox Code Playgroud)

然后安装该对象作为eventFilter我的应用程序:

QApplication a(argc,argv);
a.installEventFilter(new GlobalEventFilter());
Run Code Online (Sandbox Code Playgroud)

我也试过这样做:

QCoreApplication::instance()->installEventFilter(new GlobalEventFilter());
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,我都可以在应用程序窗口打开时检测按键,但在窗口最小化或隐藏时失败.怎么解决这个?

c++ windows qt

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

Android MediaController播放/暂停按钮和Seekbar不刷新

我正在使用MediaController.MediaPlayerControl以在我的自定义视图底部显示MediaController,但我无法让它正常工作.当我第一次播放音乐时,应该有暂停按钮可见,但是有播放,当我按下那个按钮时,音乐正确暂停,状态保持不变,之后它正常工作.此外,当我播放下一首歌曲时,旧的MediaController小部件与新的小部件重叠.有时,在播放音乐时,进度/搜索栏不会刷新.它只是在按下MediaController上的某些内容时自动更新(播放/暂停,转发等).

我发现这些问题与我的相似,但我认为他们得到的答案不会解决我的问题.

  1. Android mediacontroller Play Pause控件无法正常刷新
  2. Android MediaController搜索栏不令人耳目一新
  3. 即使文件已经播放,Android VideoView播放控件最初显示"播放"而不是"暂停"

这是我初始化控制器的方式:

private void setController()
{
    controller = new MusicController(this);

    controller.setPrevNextListeners(new View.OnClickListener() {
          @Override
          public void onClick(View v) {
            playNext();
          }
        }, new View.OnClickListener() {
          @Override
          public void onClick(View v) {
            playPrev();
          }
        });

    controller.setMediaPlayer(this);
    controller.setAnchorView(findViewById(R.id.song_list));
    controller.setEnabled(true);
}
Run Code Online (Sandbox Code Playgroud)

这是我显示控制器的方式:

public void playMusic()
{
        musicSrv.playSong(); //Play song in a service
        setController();
        controller.show(0);
        controller.requestFocus();
}
Run Code Online (Sandbox Code Playgroud)

android android-music-player mediacontroller

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

1857年是A的另一个字符代码吗?

以下语句打印'A'.为什么?"A"的ASCII码是不是65?

cout<<char(1857);
Run Code Online (Sandbox Code Playgroud)

1857年是否会与演员一起变成65岁?我正在使用int_type get()方法从fstream中读取字符,并为'A'获取类似1857的奇怪值,为'B'获取1858等等.

这是我的代码:

int ch;
while(file) // file is fstream.
{
  ch = file.get();
   cout<<char(ch)<<":"<<ch<<" ";  /*prints A:1857 B:1858 C:1859*/
}
Run Code Online (Sandbox Code Playgroud)

注意:将int转换为char将其截断为8位,因此将1857转换为65.但是为什么get()方法返回1857而不是65?

c++ ascii fstream character-encoding

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

如何知道在Windows中将新文件添加到文件系统的时间?

我想使用C++监视Windows中文件的添加和重命名.我在Google上搜索但无法找到任何有用的信息.

我愿意使用Winapi,boost或Qt.

c++ windows winapi qt boost

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