小编ven*_*rty的帖子

使用标记拆分C++ std :: string,例如";"

可能重复:
如何在C++中拆分字符串?

在C++中拆分字符串的最佳方法?可以假设该字符串由分隔的字组成;

从我们的指南角度来看,不允许使用C字符串函数,也不允许使用Boost,因为不允许使用安全锥形开源.

我现在最好的解决方案是:

string str("denmark; sweden; india; us");

str上面应该作为字符串存储在vector中.我们怎样才能做到这一点?

感谢您的投入.

c++

75
推荐指数
3
解决办法
14万
查看次数

shared_ptr和weak_ptr差异

我正在阅读Scott Meyers的"Effective C++"一书.有人提到有内置指针tr1::shared_ptrtr1::weak_ptr行为,但它们跟踪tr1::shared_ptrs指向对象的数量.

这称为引用计数.这在防止非循环数据结构中的资源泄漏方面效果很好,但是如果两个或多个对象包含tr1::shared_ptrs形成循环,则循环可以使彼此的引用计数保持在零以上,即使所有指向循环的外部指针都已被破坏.

那是tr1::weak_ptrs进来的地方.

我的问题是循环数据结构如何使引用计数高于零.我恳请一个示例C++程序.问题是如何解决的weak_ptrs?(再次,请举例).

c++ shared-ptr weak-ptr cyclic-reference c++11

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

平均案例和摊销分析之间的差异

我正在阅读一篇关于算法的摊销分析的文章.以下是文本摘要.

摊销分析与平均案例分析类似,因为它涉及一系列操作的平均成本.但是,平均案例分析依赖于有关数据结构和操作的概率假设,以便计算算法的预期运行时间.因此,它的适用性取决于关于算法输入的概率分布的某些假设.

平均情况限制并不排除即使输入概率分布的假设有效,人们也会"不幸"并遇到需要超过预期时间的输入的可能性.

我对上述文字片段的疑问是:

  1. 在第一段中,平均案例分析如何"依赖于关于数据结构和操作的概率假设?"我知道平均案例分析取决于输入概率,但上述陈述意味着什么?

  2. 作者在第二段中的意思是,即使输入分布有效,平均情况也无效?

谢谢!

algorithm analysis

40
推荐指数
3
解决办法
2万
查看次数

AVL树和展开树之间的区别

我正在研究各种树木,并遇到了AVL树木和树木.我想知道

  1. AVL树和splay树有什么区别?
  2. 我们在什么基础上选择这些发辫?
  3. 这些树的积极和消极是什么?
  4. 这些树的大O符号表现如何?

algorithm avl-tree splay-tree binary-search-tree data-structures

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

获取cout输出到std :: string

我有以下cout声明.我使用char数组,因为我必须传递vsnprintf给转换变量参数列表并存储Msg.

我们有什么方法可以cout输出到C++ std::string

char Msg[100];
char appname1[100];
char appname2[100];
char appname3[100]; 

// I have some logic in function which some string is assigned to Msg.
std::cout << Msg << " "<< appname1 <<":"<< appname2 << ":" << appname3 << " " << "!" << getpid() <<" " << "~" << pthread_self() << endl;
Run Code Online (Sandbox Code Playgroud)

c++ cout stdstring

33
推荐指数
2
解决办法
5万
查看次数

在C++中编译和打印在编译时的阶乘

template<unsigned int n>
struct Factorial {
    enum { value = n * Factorial<n-1>::value};
};

template<>
struct Factorial<0> {
    enum {value = 1};
};

int main() {
    std::cout << Factorial<5>::value;
    std::cout << Factorial<10>::value;
}
Run Code Online (Sandbox Code Playgroud)

上面的程序在编译期间计算阶乘值.我想在编译时打印阶乘值,而不是在运行时使用cout打印.我们怎样才能在编译时打印阶乘值?

我正在使用VS2009.

谢谢!

c++ templates compile-time

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

警告:#endif指令末尾的额外令牌

我正在使用VxWorks6.8 C++编译器编译一个相当大的项目.我收到了警告

警告:#endif指令末尾的额外令牌

#ifndef _OM_NO_IOSTREAM
#ifdef WIN32
#ifndef USE_IOSTREAM
#define USE_IOSTREAM
#endif USE_IOSTREAM
#endif WIN32
Run Code Online (Sandbox Code Playgroud)

我收到了很多这些警告.

  1. 为什么我从C++标准的角度来看这些警告?
  2. 编译器为此提出警告的理由是什么?
  3. 解决这个问题的最佳方法是什么?

谢谢

c++

20
推荐指数
2
解决办法
4万
查看次数

sprintf for unsigned _int64

我有以下代码.sprintf中第二个%d的输出始终显示为零.我想我指的是错误的说明符.任何人都可以帮助我获得具有正确值的写字符串.这必须以posix标准实现.感谢您的投入

void main() {
    unsigned _int64 dbFileSize = 99;
    unsigned _int64 fileSize = 100;
    char buf[128];
    memset(buf, 0x00, 128);
    sprintf(buf, "\nOD DB File Size = %d bytes \t XML file size = %d bytes", fileSize, dbFileSize);
    printf("The string is %s ", buf);
    }
Run Code Online (Sandbox Code Playgroud)

输出:

The string is
OD DB File Size = 100 bytes      XML file size = 0 bytes 
Run Code Online (Sandbox Code Playgroud)

c c++ format-specifiers uint64 long-long

19
推荐指数
3
解决办法
4万
查看次数

将clock_gettime移植到窗口

我在qnx momemntics上运行以下代码.

#define BILLION 1000000000L;

struct timespec start_time;
struct timespec stop_time; 

void start MyTestFunc() {
    //Initialize the Test Start time
     clock_gettime(CLOCK_REALTIME,&start_time)
    // ... additonal code.

    cout << "The exectuion time of func "<< calculateExecutionTime();
}


double calculateExecutionTime ()
{

    clock_gettime(CLOCK_REALTIME,&stop_time);

    double dSeconds = (stop_time.tv_sec - start_time.tv_sec);

    double dNanoSeconds = (double)( stop_time.tv_nsec - start_time.tv_nsec ) / BILLION;

    return dSeconds + dNanoSeconds;
}
Run Code Online (Sandbox Code Playgroud)

现在我想将代码移植到Windows上.任何人都可以提供示例代码.

谢谢!

c c++ windows

19
推荐指数
4
解决办法
4万
查看次数

如何检测双精度浮点溢出和下溢?

我有以下变量:

double dblVar1;
double dblVar2;
Run Code Online (Sandbox Code Playgroud)

它们可能具有较大的值但小于double最大值.

我对上面的变量有加法,乘法和幂等各种算法:

double dblVar3 = dblVar1 * dblVar2; 
double dblVar4 = dblVar1 + dblVar2;
double dblVar5 = pow(dblVar1, 2);
Run Code Online (Sandbox Code Playgroud)

在上面所有我必须检查溢出和下溢.我怎样才能在C++中实现这一目标?

c++ floating-point

19
推荐指数
4
解决办法
2万
查看次数