标签: stringbuffer

正确地重载了​​一个stringbuf来替换MATLAB mex文件中的cout

当MATLAB桌面打开时,MathWorks当前不允许您使用mex文件中的cout,因为它们已重定向stdout.他们目前的解决方法是提供一个函数mexPrintf,它们要求您使用它.在谷歌搜索了一下之后,我认为可以扩展std :: stringbuf类来完成我需要的工作.这是我到目前为止所拥有的.这是否足够强大,还是有其他方法需要重载或更好的方法来做到这一点?(寻找一般UNIX环境中的可移植性以及如果此代码未与mex可执行文件链接,则能够正常使用std :: cout)

class mstream : public stringbuf {
public:
  virtual streamsize xsputn(const char *s, std::streamsize n) 
  {
mexPrintf("*s",s,n);
return basic_streambuf<char, std::char_traits<char>>::xsputn(s,n);
  }
}; 

mstream mout;
outbuf = cout.rdbuf(mout.rdbuf());    
Run Code Online (Sandbox Code Playgroud)

c++ matlab cout stringbuffer mex

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

如何在数组末尾添加元素?

我想知道如何在数组末尾添加或附加新元素.是否有任何简单的方法可以在最后添加元素?我知道如何使用StringBuffer但我不知道如何使用它在数组中添加元素.没有ArrayList或列表我更喜欢它.我想知道StringBuffer是否适用于整数.

java arrays append stringbuffer

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

我应该将StringBuilder或StringBuffer用于webapps吗?

我在Java 1.6中编写了一个webapp并在tomcat中运行它.虽然我没有做任何明确的线程,但我想知道Spring和Tomcat幕后发生了什么.我会使用StringBuilder而不是StringBuffer遇到任何问题吗?

java stringbuilder stringbuffer thread-safety java-6

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

想象一下,应该使用StringBuffer而不是StringBuilder的真正并发场景?

我知道StringBuffer和StringBuilder之间的区别.在这里阅读!

通常,正如javadoc所说,

在可能的情况下,建议首先使用此类优先于StringBuffer,因为在大多数实现中它会更快.

但是,StringBuilder的javadoc也说:

StringBuilder多个线程使用的实例不安全.如果需要这样的同步,则建议使用{@link java.lang.StringBuffer}

所以,我想知道,StringBuffer首选的情况真的存在吗?由于可变字符串主要用于单个线程,任何人都可以给我一个并发的现实场景,首选StringBuffer吗?

java concurrency stringbuilder stringbuffer thread-safety

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

replaceAll不替换字符串

我希望用我的StringBuffer符号替换文本"REPLACEME".当我打印符号时,它是一个有效的字符串.当我打印我的查询时,它仍然有文本REPLACEME而不是符号.为什么?

private String buildQuery(){
    String query = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(REPLACEME)&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=";

    deserializeQuotes();

    StringBuffer symbols = new StringBuffer();
    for(int i = 0; i < quotes.size();i++){
        if(i == (quotes.size()-1))
            symbols.append("%22" + quotes.get(i).getSymbol() + "%22%"); //end with a quote
        else
            symbols.append("%22" + quotes.get(i).getSymbol() + "%22%2C");
    }

    System.out.println("***SYMBOLS***" + symbols.toString());
    query.replaceAll("REPLACEME", symbols.toString());

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

java regex string android stringbuffer

6
推荐指数
3
解决办法
7102
查看次数

java中的Set永远不会允许重复,但它需要具有相同参数的StringBuffer对象.为什么?

public static void main(String[] args) {
    HashSet set = new HashSet(); 
    set.add(new StringBuffer("abc"));
    set.add(new StringBuffer("abc")); 
    set.add(new StringBuffer("abc"));
    set.add(new StringBuffer("abc")); 
    System.out.println(set); 
}
Run Code Online (Sandbox Code Playgroud)

输出:

[abc,abc,abc,abc]
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我添加StringBuffer("abc")了多次对象并Set添加了它,但Set从不添加重复项.

java set stringbuffer hashset

6
推荐指数
3
解决办法
1589
查看次数

在Java 1.7+上我们是否还需要使用StringBuffer.append转换"this string"+"should"+"be"+"join"以获得最佳实践?

在Java 1.7+上我们是否还需要使用StringBuffer.append转换"this string"+"should"+"be"+"join"以获得最佳实践?

java stringbuffer

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

为什么StringBuffer有一个toStringCache而StringBuilder没有?

在JDK 8中,StringBuffer类有一个toStringCache,而StringBuilder没有.

/**
 * A cache of the last value returned by toString. Cleared
 * whenever the StringBuffer is modified.
 */
private transient char[] toStringCache;
Run Code Online (Sandbox Code Playgroud)

但为什么?

  • 我能想到的一个可能原因是StringBuffer已经同步,因此可以更容易地实现缓存.

  • 或者也许历史上StringBuffer是以这种方式实现的,所以旧代码在很大程度上依赖于这个功能?

鉴于具有逃逸分析和偏向锁定的现代JVM,差异是否相关?

java stringbuilder stringbuffer java-8

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

StringBuilder/StringBuffer,内存中包含文字字符串

示例代码:

StringBuffer sb = new StringBuffer("hi");
sb = null;
Run Code Online (Sandbox Code Playgroud)

题:

即使在StringBuffer被垃圾收集之后,文字字符串"hi"会以某种方式保留在内存中吗?或者它只是用于为StringBuffer创建一个char数组,然后永远不会放在内存中?

java string stringbuilder garbage-collection stringbuffer

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

java中的固定长度StringBuffer

在java中修复stringbuffer长度的最佳做法是什么?也就是说,如果固定值为10且stringbuffer保持ABCDEFGHIJ,当我们追加K将导致A被清除并且结果值将是BCDEFGHIJK.我正在考虑使用StringBuffer的reverse()和setLenght()方法组合但不知道它的性能如何达到100 K长度.

java stringbuffer

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