嗨,有人可以向我解释为什么这两个程序有所不同?
int main (){
string line;
while (getline(cin,line)){
cout << line;
}
}
Run Code Online (Sandbox Code Playgroud)
int main (){
string line;
while (getline(cin,line)){
cout << line << endl;
}
}
Run Code Online (Sandbox Code Playgroud)
似乎第二个程序打印出所有内容,而第一个程序只出于某种原因打印最后一行.我正在从一个带有IO重定向的文件中抓取一行,但是当我想要打印出来的行时,我被迫打印一个换行符以获取所有行.
我正在使用simple_list_item_checkedlistview并以编程方式将checked设置为true/false.但是,当用户从列表中选择项目时,它会更改复选框的状态.
它只显示一秒钟,因为它会立即重定向到另一个活动.
如何在用户点击复选框时阻止复选框的更改?
举个例子,在任何给定的运行时,
Books = {
CatSelect : ["SciFi", "Humor", "History"],
MinPages : [300,50,500]
};
如果我在如下函数中手动编写查询find,它将按预期工作并找到页数大于指定类别中指定数量的书籍。
MyCollection.find({ $or: [ { Category: Books.CatSelect[0], Pages : { $gte: Books.MinPages[0] } }, { Category: Books.CatSelect[1], Pages : { $gte: Books.MinPages[1] } } ] }).execFind(function(err,result){
...
}
Run Code Online (Sandbox Code Playgroud)
但问题是我不知道会选择多少个类别,上面的示例是.find为 2 个类别设置的示例。
如何将不同数量的条件动态地放入函数中.find?
当然,我可以将所有条件放在一个字符串中,但查询不是字符串也不是 JSON,所以我有点迷失了。
我在某处读到ksh的数组支持+=追加新元素,但我尝试了它并且它不起作用:
[ksh] # arr=(a b c d)
[ksh] # arr+=e
[ksh] # echo ${arr[*]}
ae b c d
[ksh] #
Run Code Online (Sandbox Code Playgroud)
为什么arr[0]变成了ae?
<table id="tblListViewHeader" class="adminlist" cellspacing="1" cellpadding="0" style="table-layout: fixed; width: 1003px;">
<tbody>
</table>
</td>
</tr>
<tr>
<td>
<div id="divListView" style="width: 100%; height: 300px; overflow: auto; display: block;">
<table id="tblListView" class="adminlist" cellspacing="1" cellpadding="0" style="table-layout: fixed; width: 100%;">
<tbody data-bind="template: { name: 'ActiveGradeTemplate', foreach: ActiveGrade }">
<tr class="row0">
<td data-bind="text:$index()+1" style="width: 5%;">1</td>
<td data-bind="text: GradeName" style="width: 20%;">Vantage Point</td>
<td align="right" data-bind="text: DisplayCreatedDate" style="width: 10%;">27 Mar 2013</td>
<td align="right" data-bind="text: CreatedByUser" style="width: 10%;">Name</td>
<td align="right" data-bind="text: DisplayModifiedDate" style="width: 10%;">27 Mar 2013</td>
<td align="right" data-bind="text: ModifiedByUser" …Run Code Online (Sandbox Code Playgroud) 我已经研究过,虽然这是一个非常简单的问题,但我不确定如何解决它.
我的代码看起来像这样:
public class Playlist {
public Playlist(String name) {
}
}
Run Code Online (Sandbox Code Playgroud)
当然是单独的文件:
@Test
public void CreatePlaylist(){
Playlist myPlaylist = new Playlist("Workout Playlist");
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试打印这个新播放列表"锻炼播放列表"的实际名称,但我似乎无法找到这样做的方法.
我正在尝试打开蓝牙设置的标准窗口(设备名称,可发现性等).
但是,一般方法startActivity(intent)结束时指向NullPointerExceptionBluetoothSettings.java onCreate:135.
检查Android代码,我发现在135行他们从意图中获得了一些额外的东西.所以我准备了相同的附加功能(我在android核心BluetoothDevicePicker接口中找到的名称)并发出它 - 与NullPointerException效果相同.
可能是我准备的额外内容的错误名称?
那么当我打开手动操作用户的蓝牙设置时,有没有一种方法可以从系统本身提交的意图中看到那些额外的(特别是名字)?
非常感谢.
我的代码是:
Intent settingsIntent = new Intent();
settingsIntent.setClassName("com.android.settings", com.android.settings.bluetooth.BluetoothSettings");
settingsIntent.putExtra("android.bluetooth.devicepicker.extra.LAUNCH_PACKAGE", "mypackage.bttoggle");
settingsIntent.putExtra("android.bluetooth.devicepicker.extra.DEVICE_PICKER_LAUNCH_CLASS", "mypackage.bttoggle.BluetoothWidget");
PendingIntent settingsPendingIntent = PendingIntent.getActivity(context, 0, settingsIntent, 0);
views.setOnClickPendingIntent(R.id.btnSettings, settingsPendingIntent);
Run Code Online (Sandbox Code Playgroud)
这是一个小部件,所以我需要使用PendingIntent.
此代码在运行时获得以下异常:
ERROR/AndroidRuntime(4905):未捕获的处理程序:由于未捕获的异常而导致线程主要退出ERROR/AndroidRuntime(4905):java.lang.RuntimeException:无法启动活动ComponentInfo {com.android.settings/com.android.settings.bluetooth. BluetoothSettings}:java.lang.NullPointerException ERROR/AndroidRuntime(4905):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2596)ERROR/AndroidRuntime(4905):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java: 2621)ERROR/AndroidRuntime(4905):在android.app.ActivityThread.access $ 2200(ActivityThread.java:126)ERROR/AndroidRuntime(4905):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1932)ERROR/AndroidRuntime(4905):在android.os.Handler.dispatchMessage(Handler.java:99)ERROR/AndroidRuntime(4905):在android.os.Looper.loop(Looper.java:123)ERROR/AndroidRuntime(4905):在android.app.ActivityThread.main(ActivityThread.java:4595)ERROR/AndroidRuntime(4905):at java.lang.reflect.Method.invokeNative(Native Method) )ERROR/AndroidRuntime(4905):at java.lang.reflect.Method.invoke(Method.java:521)ERROR/AndroidRuntime(4905):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java) :860)ERROR/AndroidRuntime(4905):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)ERROR/AndroidRuntime(4905):at dalvik.system.NativeStart.main(Native Method)ERROR/AndroidRuntime(4905):引起:java.lang.NullPointerException ERROR/AndroidRuntime(4905):at com.android.settings.bluetooth.BluetoothSettings.onCreate(BluetoothSettings.java:135)ERROR/AndroidRuntime(4905):at android.app .Instrumentation.callActivityOnCreate(Instrumentation.java:1047)ERROR/AndroidRuntime(4905):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2544)ERROR/AndroidRuntime(4905):... 11更多
在调查之后,我发现在BluetoothSettings.java的第135行有:
public class BluetoothSettings extends PreferenceActivity
{
... 132 mNeedAuth = intent.getBooleanExtra(BluetoothDevicePicker.EXTRA_NEED_AUTH, false);
133 mFilterType = intent.getIntExtra(BluetoothDevicePicker.EXTRA_FILTER_TYPE, 134 BluetoothDevicePicker.FILTER_TYPE_ALL);
135 …Run Code Online (Sandbox Code Playgroud) 我正在解决这个问题。我正在实现循环映射,我有 4 个处理器,所以一个任务映射到处理器 1(根)上,然后其他三个是工人。我正在使用循环映射,并且我有几个整数作为输入,例如 0-40。我希望从每个工人那里接收(在这种情况下,每个工人将收到 10 个整数),进行一些计数并保存它。
我正在使用 MPI_Send 从根发送整数,但我不知道如何乘以从同一进程(根)接收一些数字。此外,我发送缓冲区大小固定为 1 的 int,当有数字(例如 12)时,它会做坏事。如何检查int的长度?
任何意见,将不胜感激。谢谢
从某种程度上说,有些事情让我的大脑感到不安:我试图根据返回类型重载[]运算符.这是我需要做的:
class A {
private:
double* data_;
int N_;
public:
A (N=0):N_(N){
data_ = new double[N];
}
~A {delete[] data_;}
double operator[] (const int i) {
return data_[i];
}
double* operator[] (const int i) {
return &data[i]; // for example; in fact here i need to return some block of data_
}
};
Run Code Online (Sandbox Code Playgroud)
这段代码不会编译; 那是我的问题.有人可以帮我解决这个问题吗?
PS:我知道如何在返回类型上重载正常函数,例如:
int foo ();
string foo ();
Run Code Online (Sandbox Code Playgroud)
我使用了一些我在这个论坛中读到的技巧.通过这种方式:
struct func {
operator string() { return "1";}
operator int() { return 2; }
};
int main( …Run Code Online (Sandbox Code Playgroud) 根据"Inside C++ Object Model",只有当以下四个条件中的任何一个为真时,编译器才会生成复制构造函数(如果程序员没有声明):
当类包含存在复制构造函数的类的成员对象时(由类设计器显式声明,如前一个String类的情况,或由编译器合成,如类Word的情况)
当类派生自存在复制构造函数的基类时(同样,显式声明或合成)
当类声明一个或多个虚函数时
当类派生自一个或多个基类是虚拟的继承链时
这意味着如果我有一个只有构造函数的类,那么编译器将不会提供复制构造函数.
让我们举一个例子:
class test
{
test(){}
};
int main()
{
test obj1; //statement 1
test obj2(obj1); //statement 2
}
Run Code Online (Sandbox Code Playgroud)
以上代码工作正常.现在问题来自我在类测试中添加以下行:
test(const test& rhs) = delete;
Run Code Online (Sandbox Code Playgroud)
"= delete"确保不会自动提供复制构造函数.添加上面的行后,我收到了声明2的错误Use of deleted function test::test(const test&).
我的问题是:根据"内部C++对象模型",我不需要上述类的复制构造函数,所以当我明确说不生成复制构造函数(使用删除)时,为什么会出现错误?因为我期望编译器不需要上面类的复制构造函数.
我使用的是gcc 4.6.3版.