小编Mac*_*cke的帖子

boost :: lexical_cast和非内置类型的字符串化

关于具有复合类型的boost :: lexical_cast,我有一个(也许)简单的问题(在我的例子中)std::vector.

我的第一个模板化字符串化函数版本如下

template <typename T>
std::string stringiy(const T &t)
{
std::ostringstream o;
o<< t;
return o.str();
}
Run Code Online (Sandbox Code Playgroud)

一个工作的例子如下:

vector<int> x(10,-3;
cout << stringify<vector<int> >(x) << endl;
Run Code Online (Sandbox Code Playgroud)

输出, "-3-3-3-3-3-3-3-3"~ 但出于性能原因,我想利用boost::lexical_cast

现在我改变了函数实现:

template <typename T>
std::string stringiy(const T &t)
{
   return boost::lexical_cast<string>(t);
}
Run Code Online (Sandbox Code Playgroud)

虽然此方法适用于内置类型,但它会在上次使用时停止工作 std::vector

如果为向量创建专用模板,问题仍然存在(它不会编译)

template <typename T>
std::string stringiy(const std::vector<T> &t)
{
     vector<string> strret = num2str(t);
     string r;
     for ( vector<string>::iterator iter = strret.begin(); iter!=strret.end(); ++iter )
    r.append(*iter);
     return r;
}
Run Code Online (Sandbox Code Playgroud)

有什么建议吗?

g ++ - …

c++ templates boost lexical-cast stringify

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

在if-cases泄漏中定义的变量?(又名为什么这甚至编译?)

似乎在if语句中声明的变量泄漏到以下语句中?

我复制粘贴了一些代码,令我惊讶的是它编译时,它应该没有!我准备提交代码并且在此之前我抓住了错误.下面是一个显示问题的工作(?)程序.

以下代码段调用不存在的对象上的函数:

#include <iostream>

class A {
public:
  virtual ~A() {}
};

class B : public A {
public:
  void fooB() { std::cout << "fooB\n"; }
};

class C : public A {
public:
  void fooC() { std::cout << "fooC\n"; }
};

int main() {

   A* a = new C();

   if (B* b = dynamic_cast<B*>(a)) {
      b->fooB();
   } else if (C* c = dynamic_cast<C*>(a)) {
      c->fooC();
      b->fooB();
   }

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

它编译并输出如下:

fooC
fooB
Run Code Online (Sandbox Code Playgroud)

这肯定是错的.我是否需要启用一些警告以防止编译此代码?

想象一下,如果我试图访问某些成员变量或调用虚函数,那就是恐怖!

VS2008和GCC 4.8中的行为相同

c++

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

用c ++处理对象

我被告知句柄是一种"无效"指针.但究竟什么"无效指针"意味着什么,它的目的是什么.还有什么"somehandle = GetStdHandle(STD_INPUT_HANDLE);呢?

c++ winapi handle void-pointers

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

django:删除django的ON DELETE CASCADE行为

我在django开发中面临一个问题.实际上我创建了一个模型,其中包括其他4个模型的外键.现在我在管理站点上使用这些所有模型.问题是,当我删除在主模型中使用foriegn键的记录时,此删除过程也会从我的主模型中删除记录.我要求如果模型包含任何其他模型的forign键,那么如果我从admin中删除此外键模型记录,则不必从使用此模型作为外键的模型中删除记录.

任何人都可以知道我怎么能阻止这个'ON DELETE CASCADE'

我将非常感谢你.问候

django

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

如何在std :: vector中找到一个对象

我有一个像下面这样的对象

 class MyClass{
   int a;
   double b;
 };
Run Code Online (Sandbox Code Playgroud)

 vector<MyClass> vMyClass;
Run Code Online (Sandbox Code Playgroud)

然后我想在vMyClass中搜索尝试使用算法函数:

 if( std::find(vMyClass.begin(), vMyClass.end(), aiField) == vMyClass.end())
Run Code Online (Sandbox Code Playgroud)

我也定义了 operator==

 int operator ==(Field &Left,Field &Right)
 {
    return memcmp(&Left,&Right,sizeof(Field));
 }
Run Code Online (Sandbox Code Playgroud)

要么

int operator ==(Field &Right)
{
    return memcmp(this,&Right,sizeof(Field));
}
Run Code Online (Sandbox Code Playgroud)

但是我收到一条错误消息.

1>c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\algorithm(40) : error C2678: binary '==' : no operator found which takes a left-hand operand of type 'MyClass' (or there is no acceptable conversion)
1>        C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\guiddef.h(192): could be 'int operator ==(const GUID &,const GUID …
Run Code Online (Sandbox Code Playgroud)

c++ vector std

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

c ++自动'类型转换'转换

有人可以解释为什么下面的代码不能在错误时编译:

Error   1   error C2243: 'type cast' : conversion from 'Der *' to 'Base *' exists, but is inaccessible  d:\users\lzizva\documents\mta\c++\projects\temp1\17022014.cpp   50  1   temp1
Error   2   error C2243: 'type cast' : conversion from 'Der *' to 'Base *' exists, but is inaccessible  d:\users\lzizva\documents\mta\c++\projects\temp1\17022014.cpp   51  1   temp1
    3   IntelliSense: conversion to inaccessible base class "Base" is not allowed   d:\users\lzizva\documents\mta\c++\projects\temp1\17022014.cpp   50  12  temp1
    4   IntelliSense: conversion to inaccessible base class "Base" is not allowed   d:\users\lzizva\documents\mta\c++\projects\temp1\17022014.cpp   51  14  temp1
Run Code Online (Sandbox Code Playgroud)

我认为当有私有继承时,子进程获取所有属性和方法并将它们设置为私有,它只会影响子进程的子类.我在这里错过了什么?编译器实际上做了什么?

提前谢谢,Liron

#include <iostream>

using …
Run Code Online (Sandbox Code Playgroud)

c++ types casting

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

哪个更有效:一个Win32功能.或类似的CRT功能.在VC++应用程序中.?

我开始win32编程很有趣,因为我喜欢复杂的东西,我喜欢编程(这就是Charles Petzold和Jeffrey Richter编写这些精美书籍的错误.)可能是因为我有性能代码的东西.

现在,真正的问题是:我将使用GetEnvironmentVariable()[win32 API函数]和getenv()[标准CRT函数]的示例.

这两个都返回作为参数提供的环境变量的值.

那么使用哪一个会更有效,或者换句话说哪一个具有更短的调用堆栈,哪一个更直接?想想一些功能.被称为百万次.

我相信他们中的任何一个都映射到另一个.我是对的还是我在这里遗漏了一些东西.

简介:在为win32 api编程时,如果api和c/c ++库中都有可用的函数提供相同的功能,我应该使用哪一个?

谢谢.

c c++ winapi visual-c++

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

从C#中的未知类型强制转换

我有一个对象,其中包含字符串中的值和字段中的原点类型。

class myclass
{
   public string value;
   public Type type;
}
myclass s=new myclass();
s.value = "10";
s.type = typeof(int);
Type tt = s.type;
row.Value[ind]= s[0].value as tt; //i have error here
Run Code Online (Sandbox Code Playgroud)

我如何才能通过该类型转换值。

c# casting

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

哪种语言最适合高效的网络爬虫?

我需要编写一个网络爬虫,我需要的是性能最好的语言,如内存和性能.

编辑:原始标题是"哪种语言针对速度和性能进行了优化c ++或C#"

c# c++

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

如何在Qt C++中从另一个类中实现一个类

我在我的项目中做了两堂课.我想使用从第1类到第2类的函数问题是我无法将第1类实例化为第2类.顺便说一下,这两个类都在不同的头文件中声明.

这是一个示例代码:

标题1:

class 1stclass{
   public:

   2ndclass *class2;
   void function1(QString parameter1)
   {
       QString str1;
       list = class2->function2(parameter1);
   }
};
Run Code Online (Sandbox Code Playgroud)

标题2:

class 2ndclass{
   public:

   QString function2(QString parameter2)
   {
       QString str2 = parameter2 + "hello"; 
       return str2;
   }
};
Run Code Online (Sandbox Code Playgroud)

我想在函数2中使用该函数,但它给了我一个错误.这是错误消息:

  1. ISO C++禁止声明'2ndclass'没有类型;
  2. 预期';' 在'*'之前;
  3. 'class2'未在此范围内声明;

c++ qt

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

如何在OpenGL中启用引力?

我有一个球,我必须从一个高度下降它应该表现,因为它在现实世界的行为意味着它应该下降与g = 9.8并且还反弹.任何人告诉我如何在开放的gl中做到这一点C++?

opengl

-4
推荐指数
3
解决办法
3748
查看次数

标签 统计

c++ ×8

c# ×2

casting ×2

winapi ×2

boost ×1

c ×1

django ×1

handle ×1

lexical-cast ×1

opengl ×1

qt ×1

std ×1

stringify ×1

templates ×1

types ×1

vector ×1

visual-c++ ×1

void-pointers ×1