我试图在Linux系统上获得屏幕的分辨率以及特定窗口(程序正在运行的程序)的分辨率.我不需要修改分辨率,我只需要当前的值.据我所知,我们可以在Windows上调用一些系统函数,我们怎样才能在Linux上执行,最好是使用C/C++语言?提前致谢.
更新:实际上,我不需要做GUI,虽然我知道Qt和GTK +可以做到,但我不愿意包含一个外部库来获得分辨率.
这是代码:
string str;
cin>>str;
cout<<"first input:"<<str<<endl;
getline(cin, str);
cout<<"line input:"<<str<<endl;Run Code Online (Sandbox Code Playgroud)
结果是getline从不暂停用户输入,因此第二个输出始终为空.
在花了一些时间之后,我意识到在第一次调用"cin >> str"之后,似乎'\n'仍然存储在cin中(使用cin.peek()来检查),它立即结束了getline.解决方案是在第一次使用和第二次使用之间再添加一行:
cin.ignore(numeric_limits::max(), '\n');
但是,我仍然不明白,为什么在第一次通话后'\n'留在那里?什么是梦想和运营商>>真的吗?
我需要的只是一个动态增长的数组.我不需要随机访问,我总是插入到最后并从头到尾阅读它.
slist似乎是第一选择,因为它提供了我所需要的足够的东西.但是,我不知道通过使用slist而不是vector来获得什么好处.此外,我读到的关于STL的一些材料说,"向量通常是访问元素和从序列末尾添加或删除元素的最有效时间".因此,我的问题是:对于我的需求,slist真的比矢量更好吗?提前致谢.
我正在尝试检索IP Address程序中的本地计算机.操作系统是Ubuntu 8.10.我尝试使用gethostname()并gethostbyname()检索IP Address.我收到的答案是127.0.1.1.我了解到它似乎是一Debian件事:
这里链接的文件解释了这个想法.
我的/etc/hosts文件内容是:
127.0.0.1 localhost
127.0.1.1 mymachine
在这种情况下,有没有其他方式以编程方式(更喜欢C或C++)获取IP地址而不修改机器上的系统文件?
以下是设置:
Server Client
| |
accept connect
| |
v |
send msg1-> |
| |
v v
recv <- send
| |
v v
send msg2-> recv
| |
v v
close
这是我的问题:
1.客户端在关闭之前实际收到msg1,为什么会这样?
2.发送msg2正常返回.由于客户端在收到msg1后关闭,为什么发送msg2成功?
PS我正在使用TCP的流套接字.