小编Tro*_*lum的帖子

使用str(const char*)设置std :: stringstream的内容会产生奇怪的后果

std::stringstream广泛使用它来生成代码.当使用str()函数设置内容然后使用时,我遇到了一些奇怪的行为operator<<.有人可以向我解释这种行为.我非常感谢 - 谢谢.

示例一:

std::stringstream ssa;
ssa.str("Setting string");
std::cout << ssa.str() << std::endl;
ssa << " adding to string";
std::cout << ssa.str() << std::endl;
Run Code Online (Sandbox Code Playgroud)

输出:

设置字符串

添加到字符串

预期:

设置字符串

设置字符串添加到字符串

因此,在对文档进行一些阅读之后,我发现我应该将打开模式设置为ios_base::ate:

std::stringstream ssb(std::ios_base::ate);
ssb.str("Setting string");
std::cout << ssb.str() << std::endl;
ssb << " adding to string";
std::cout << ssb.str() << std::endl;
Run Code Online (Sandbox Code Playgroud)

输出:

设置字符串

设置字符串

再次(或现在)我期望:

设置字符串

设置字符串添加到字符串

为什么我会得到我的结果,我如何得到我想要的结果?Ei能够设置a的初始stringstringstream和附加值string吗?

我知道我可以将内容设置为空string(""),然后只使用<<operator.这实际上是我正在使用的解决方法.我只是不明白观察到的行为.解决方法使我的代码更加混乱.

c++ stringstream c++11

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

Scala隐式类型转换和==

任何人都可以告诉我为什么隐式类型转换不起作用==

例:

class BitArray(l: Int, v: Long) {  
    val length = l  
    var value = v  
    def ==(that: BitArray) = value == that.value  
    def ==(integer: Long) = value == integer  
    def +(that: BitArray) = new BitArray(length,value+that.value )  
    def +(integer: Long) = new BitArray(length,value+integer )  
//...  
}  
object BitArray{
        implicit def longToBitArray(x : Long) = new BitArray(64,x)  
        def apply(v: Long) :BitArray = apply(64,v)  
}
Run Code Online (Sandbox Code Playgroud)

现在我能做到:

scala> BitArray(5) + 5  
res13: BitArray = 00000000000000000000000000001010  
scala> 5 + BitArray(5)   
res14: BitArray …
Run Code Online (Sandbox Code Playgroud)

scala type-conversion

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

为什么numpy.dtype('float64')特别?

有人可以解释下面脚本输出背后的逻辑吗?

import numpy
if(numpy.dtype(numpy.float64) == None):
    print "Surprise!!!!"
Run Code Online (Sandbox Code Playgroud)

谢谢 :)

python numpy

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

Scala:泛型类类型的约束

我是Scala的新手.

我想实现一个通用矩阵类"class Matrix [T]".对T的唯一约束应该是T应该实现"+"和"*"方法/函数.我该怎么做呢?

例如,我希望能够同时使用Int,Double和我自己定义的类型,例如Complex

我正在思考一些事情:

class Matrix[T <: MatrixElement[T]](data: Array[Array[T]]) {
   def *(that: Matrix) = ..// code that uses "+" and "*" on the elements
}
abstract class MatrixElement[T] {
    def +(that: T): T
    def *(that: T): T 
}
implicit object DoubleMatrixElement extends MatrixElement[Double]{
    def +(that: Double): Double = this + that
    def *(that: Double): Double = this * that 
}
implicit object ComplexMatrixElement extends MatrixElement[Complex]{
    def +(that: Complex): Complex = this + that
    def *(that: Complex): Complex = …
Run Code Online (Sandbox Code Playgroud)

generics scala scala-2.8

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

Scala:实现Numeric的子类型[T]

如何实现Numeric [T]的子类型?我一直在寻找这方面的指南,但没有找到任何.子类型的例子可能是Rational还是Complex?

在此先感谢Troels

scala generic-programming scala-2.8

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

malloc()和虚函数有什么问题?

可能重复:
C++:为什么new需要?

为什么我不能使用malloc为我的对象分配空间,因为它们是包含虚函数的类的子元素?这真令人沮丧.有充分的理由吗?

以下程序说明了这个问题.它在第27行的段错误,我称之为aa-> f()

#include <iostream>
#include <cstdlib>

class A 
{
public:
    virtual int f() {return 1;}
};

class B 
{
public:
    int f() {return 1;}
};

class Aa : public A {};

class Bb : public B {};

int main()
{
    Aa* aa = (Aa*)malloc(sizeof(Aa));
    Aa* aan = (Aa*)new Aa();
    Bb* bb = (Bb*)malloc(sizeof(Bb));
    std::cout << bb->f() << std::endl;
    std::cout << aan->f() << std::endl;
    std::cout << aa->f() << std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

版本信息:g ++(Ubuntu/Linaro 4.4.4-14ubuntu5)4.4.5

c++ malloc virtual-functions

5
推荐指数
3
解决办法
1265
查看次数

Scala StandardTokenParsers 与 JavaTokenParsers

StandardTokenParsers 和 JavaTokenParsers 之间到底有什么区别?一个有什么用,另一个有什么用?

在 StandardTokenParsers 中,我可以使用 lexical.reserved 定义关键字,但这对我有什么帮助呢?

BR 特罗尔斯

parsing scala

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