我只是尝试使用Visual Studio 2012 Release Candidate,C++编译更大的项目.该项目现在使用VS2010进行编译.(我只是贪婪得到C++ 11的东西,所以我试过.:)
除了我自己可以解释的事情之外,该项目使用如下代码:
ostringstream ostr;
ostr << "The " __FUNCTION__ "() failed to malloc(" << i << ").";
throw bad_alloc(ostr.str().c_str());
Run Code Online (Sandbox Code Playgroud)
编译器现在抱怨
error C2248: 'std::bad_alloc::bad_alloc' : cannot access private member declared
in class 'std::bad_alloc'
Run Code Online (Sandbox Code Playgroud)
......这是真的.那个版本的构造函数现在是私有的.
将该版本的构造函数设为私有的原因是什么?C++ 11标准是否建议不要将该构造函数与参数一起使用?
(我可以想象,如果分配失败,可能会导致更多问题,试图构建任何新的东西.但是,这只是我的猜测.)
谢谢,彼得
你有没有经历过BOOST_FOREACH基于范围的for循环取代?机械地做这件事时是否有任何问题(即没有深入研究周围的代码).
背景:我有大约250K行的源代码,使用Microsoft VC++ 10(Visual Studio 2010)编译.该代码还使用了boost库中的BOOST_FOREACH.我只是尝试VC++ 11(Visual Studio 2012 RC),它也实现了基于范围的for循环auto.
到目前为止,我遇到了元素BOOST_FOREACH在括号外声明的情况(括号中没有声明):
BOOST_FOREACH (element, container) {
...
}
Run Code Online (Sandbox Code Playgroud)
...并且element预计将在循环之后设置值break.你能记得类似的问题吗?
当BOOST_FOREACH包含声明时,您会选择替换显式类型auto吗?如果只是机械地重写BOOST_FOREACH而不是在那里留下明确的声明,那么这样做有什么好处吗?
谢谢你的帮助,彼得
我正在向C++应用程序添加一个新对话框(Visual Studio 2010).我无法摆脱默认情况下放置在白色选项卡上的复选框的灰色背景:

.rc文件中的相关文本如下:
IDD_ExportHTML DIALOGEX 164, 128, 292, 136
STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | WS_POPUP | WS_CAPTION | WS_SYSMENU
FONT 8, "MS Sans Serif", 0, 0, 0x0
BEGIN
LTEXT "statFileName0",102,9,9,59,8
LTEXT "statFileName",101,9,20,190,8
CONTROL "",150,"SysTabControl32",TCS_RAGGEDRIGHT,11,38,201,92
DEFPUSHBUTTON "btnOK",IDOK,241,97,45,15
PUSHBUTTON "btnCancel",IDCANCEL,241,115,45,15
CONTROL "chboxLines",106,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,34,71,135,12
CONTROL "chboxBackground",107,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,34,84,135,12
CONTROL "chboxPaging",108,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,34,98,135,12
END
Run Code Online (Sandbox Code Playgroud)
它在应用程序运行时的行为方式相同.我应该设置或告诉复选框他们是标签的子项?或者我该如何解决问题
感谢您的时间和经验,Petr
我有std::vector<std::string> v;(初始化).如何使用range-for循环访问除第一个元素之外的所有元素(在索引0上).对于所有元素:
for (const string & s: v)
process(s);
Run Code Online (Sandbox Code Playgroud)
代替的v一范围的表达可以使用.如何编写范围表达式以跳过第一个元素(或跳过前n个元素)?
我知道如何使用v.begin() + 1和使用经典循环来获得效果.我正在寻找新的,更具可读性的推荐替代方案.可能类似于Python切片的东西?...喜欢:
for s in v[1:]:
process(s)
Run Code Online (Sandbox Code Playgroud) 摘要:有了contains的字节图像,我怎样才能获得一个干净且正确的读取器来返回文本文件的行?a.zipa.txt
我确实将 zip 文件的图像从 Web 服务下载到byte[] content. 我想写一个类似的方法
private BufferedReader contentToBufferedReader(byte[] content)
Run Code Online (Sandbox Code Playgroud)
这将返回一个可以像这样使用的读者
reader = contentToBufferedReader(content);
while ((line = reader.readLine()) != null) {
processThe(line);
}
reader.close()
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经(更新)
private BufferedReader contentToBufferedReader(byte[] content) {
ByteArrayInputStream bais = new ByteArrayInputStream(content);
ZipInputStream zipStream = new ZipInputStream(bais);
BufferedReader reader = null;
try {
ZipEntry entry = zipStream.getNextEntry();
// I need only the first (and the only) entry from the zip file.
if (entry != null) { …Run Code Online (Sandbox Code Playgroud) 我正在学习如何使用Android日历.到目前为止,我能够显示有关现有日历的信息.我也可以创建自己的本地日历 - 测试代码如下:
private void createCalendarTest()
{
Uri.Builder builder = Calendars.CONTENT_URI.buildUpon();
builder.appendQueryParameter(android.provider.CalendarContract.CALLER_IS_SYNCADAPTER, "true")
.appendQueryParameter(Calendars.ACCOUNT_NAME, "private")
.appendQueryParameter(Calendars.ACCOUNT_TYPE, CalendarContract.ACCOUNT_TYPE_LOCAL);
Uri uri = builder.build();
ContentValues values = new ContentValues();
values.put(Calendars.NAME, "TEST");
values.put(Calendars.CALENDAR_DISPLAY_NAME, "Calendar named TEST");
values.put(Calendars.SYNC_EVENTS, false);
values.put(Calendars.VISIBLE, true);
getContentResolver().insert(uri, values);
}
Run Code Online (Sandbox Code Playgroud)
实际上,我可以创建许多只有不同的日历_ID.我在别处读过,我只能在使用同步适配器时创建日历.现在,我该如何删除日历?我希望URI还必须包含同步适配器信息和_ID已删除日历的信息.我尝试了以下代码,但我没有成功:
private void deleteCalendarTest()
{
Uri.Builder builder = Calendars.CONTENT_URI.buildUpon();
builder.appendPath("6") // here for testing; I know the calender has this ID
.appendQueryParameter(android.provider.CalendarContract.CALLER_IS_SYNCADAPTER, "true")
.appendQueryParameter(Calendars.ACCOUNT_NAME, "private")
.appendQueryParameter(Calendars.ACCOUNT_TYPE, CalendarContract.ACCOUNT_TYPE_LOCAL);
Uri uri = builder.build();
getContentResolver().delete(uri, null, null);
Toast.makeText(this, "??? deleteCalendarTest() …Run Code Online (Sandbox Code Playgroud) 简介:如何cmd使用std::cout流将使用UTF-8编码(Windows CP 65001)存储的源代码中定义的字符串文字正确打印到控制台?
动机:我想修改优秀的Catch单元测试框架(作为实验),以便它显示带有重音字符的文本.修改应该简单,可靠,并且对其他语言和工作环境也应该有用,以便作者可以接受它作为增强.或者,如果你知道Catch,如果有其他替代解决方案,你可以发布吗?
细节:让我们从捷克版的"快速棕色狐狸......"开始吧
#include <iostream>
#include "windows.h"
using namespace std;
int main()
{
cout << "\n-------------------------- default cmd encoding = 852 -------------------\n";
cout << "P?íšern? žlu?ou?ký k?? úp?l ?ábelské ódy!" << endl;
cout << "\n-------- Windows Central European (1250) set for the cmd console --------\n";
SetConsoleOutputCP(1250);
std::cout << "P?íšern? žlu?ou?ký k?? úp?l ?ábelské ódy!" << std::endl;
cout << "\n------------- Windows UTF-8 (65001) set for the cmd console …Run Code Online (Sandbox Code Playgroud) 摘要:在EXEC sp_executesql @code失败的含量比4000更长@code,但@code不截断为4000个Unicode字符。
我正在观察 SQL Server 2014 Developer Edition 上的问题。
更多细节:我的 SQL 安装脚本动态定义了一些代码,因为它应该修改代码以反映环境(只有一次,在安装过程中)。让以下@datasource变量捕获特定环境的结果:
DECLARE @datasource nvarchar(100) = N'testdb.dbo.source_table'
Run Code Online (Sandbox Code Playgroud)
的@code变量声明为的nvarchar(max)类型和REPLACE函数用于修改字符串根据需要(即,以取代由所述占位符@datasource内容) -见下面的代码段。
在 Management Studio 中执行sp_executesql时@code,显示以下错误:
消息 156,级别 15,状态 1,过程 my_sp,第 86 行
关键字“AS”附近的语法不正确。
消息 102,级别 15,状态 1,过程 my_sp,第 88 行
“WHERE”附近的语法不正确。
下面的代码片段是上述方式失败的代码的精确副本(将被复制)。功能可能并不重要——可能只有代码的长度很重要。的@code内容显然是由截短sp_executesql; 但是,它不应该是(见下文):
-- ... repeated from above
DECLARE @datasource nvarchar(100) = N'testdb.dbo.source_table'
DECLARE @code nvarchar(MAX) …Run Code Online (Sandbox Code Playgroud) 该系统由一个中央SQL服务器和两个或多个卫星服务器组成.卫星服务器收集测量数据并将其发送到中央服务器.看图:

(图片来自官方的Service Broker通信协议文章并进行了修改.)
我需要尽可能简单地添加另一个satelite SQL.我的意思是,设置新添加的卫星SQL应该可能与其他卫星SQL机器相同.有可能吗?
所有SQL服务器都位于同一个域中,不需要基于证书的加密 - 至少现在不行.现在优先考虑部署的简易性和速度.在后期阶段可以改善安全性.
换句话说,卫星SQL可以使用相同的消息类型,相同的合同创建代码,相同的端点设置,......
我对路由和目标绑定有点困惑.你能评论一下吗?
Lars Vogel关于SQLite的教程,自己的ContentProvider和Loader使用以下布局作为ToDo项目列表(查看http://www.vogella.com/articles/AndroidSQLite/article.html#todo_layout,todo_row.xml布局文件):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<ImageView
android:id="@+id/icon"
android:layout_width="30dp"
android:layout_height="24dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="8dp"
android:layout_marginTop="8dp"
android:src="@drawable/reminder" >
</ImageView>
<TextView
android:id="@+id/label"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:lines="1"
android:text="@+id/TextView01"
android:textSize="24dp"
>
</TextView>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.它工作得很好.Android Developer Tools(Eclipse)建议用the替换ImageViewthe drawable属性TextView.我尝试了以下布局定义:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/label"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:layout_marginLeft="4dp"
android:drawablePadding="8dp"
android:drawableStart="@drawable/reminder"
android:lines="1"
android:text="@+id/TextView01"
android:textSize="24sp"
>
</TextView>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
即drawableStart使用而不是ImageView.相关的android:layout_marginLeft,android:drawablePadding似乎工作正常. …