小编Que*_*ueg的帖子

C++中的字符串管理

我决定在使用Java一段时间后回到C++,现在我对字符串在C++中的工作方式感到很困惑.

首先,假设我们有一个功能:

void fun() {
   int a = 1;
   Point b(1,2);
   char c[] = "c-string";
}
Run Code Online (Sandbox Code Playgroud)

据我所知,ab在堆栈上分配.c(指针)也在堆栈上分配,但内容("c-string")在堆上幸福地生活.

Q1:c函数fun结束时是否自动解除分配内容?

其次让我们假设我们有一个c ++ string:

void fun2() {
  (1) string s = "c++ string";
  (2) s += "append";
  (3) s = "new contents";
  (4) s = "a" + s + "c";
}
Run Code Online (Sandbox Code Playgroud)

字符串文档对字符串的工作原理并不太具体,所以以下是问题:

Q2:结束s后是否会自动解除分配内容fun2

问题3:当我们连接两个字符串时会发生什么?我应该关心内存使用情况吗?(第2行)

Q4:当我们覆盖字符串的内容时会发生什么(第3行) - 记忆怎么样?我应该担心吗?最初分配的空间是否重复使用?

Q5:如果我构造一个这样的字符串(第4行),该怎么办?这个很贵吗?是字符串文字("a","c")汇总(如在Java中)还是在最终的可执行文件中重复?

我最终要学习的是如何在C++中正确使用字符串. …

c++ string

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

Grails 2.0为自己的类设置了日志记录

如何将log4j配置DEBUG仅设置为我自己的类 - 域,控制器等?我不想从grails类中获取信息(关于获取资源等),我只想要自己的调试跟踪..

我已经尝试了很多组合,似乎没有工作,即

debug 'grails.app.controller.test.MainController' - 没有用

java grails groovy log4j

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

CSS两列布局,具有恒定的侧边栏宽度

如何使用divs(或html5 section)定义设计

| 内容 - 填写区域| <gap 20px> |侧边栏宽度200px贴在右侧|

html css

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

每个用户都可以在Liferay中使用不同的布局吗?

我是Liferay的新手,目前我(作为管理员)设置可见的portlet及其在页面上的位置.首先,只有我可以改变布局.其次,所有用户都看到相同的布局.这不完全是我想要的.

是否有可能在Liferay中6.1.0有门户网站的每个用户可以设定自己的portlet组成(包括其中的portlet,并在那里他们应该显示)?

java portlet liferay

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

如何将ByteArrayOutputStream转换为Reader

ByteArrayOutputStream b = ...;

//some code under test writes to b

 Reader result = (convert b to reader);

 IOUtils.contentEqualsIgnoreEOL(expected, result);
Run Code Online (Sandbox Code Playgroud)

如何将a转换ByteArrayOutputStreamReader

java unit-testing

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

自己的输出流(模拟cout)

这是一个示例C++代码

ostream& log = cout;
ostream& getLog() { return log; }

// somewhere in code
getLog() << "Message";
Run Code Online (Sandbox Code Playgroud)

执行此代码时,将打印"消息".

问:丢弃这些消息的最简单方法是什么(不打印,不保存)?getLog仍然必须由客户端使用,但可能会返回一些吞下所有消息的模拟输出流...

c++ io std ostream

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

在C++ 11中同步整个类

看看这个简单的日志记录类(这里只介绍相关部分):

class Logger {
public:
    void log(string& msg){
        //lock for all instances
        cout << "[" << tag << "] " << msg;
        //unlock
    }
private:
     string tag;

};
Run Code Online (Sandbox Code Playgroud)

同步整个类(非实例)的最简单方法是什么,以便Logger(在不同的线程中)的单独实例cout按顺序写入(而不是一次性写入)?

c++ synchronization mutex iostream c++11

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

std :: vector可以容纳超过2 ^ 32个元素

std::vector::size返回一个size_t所以我猜它最多可以容纳2 ^ 32个元素.

有没有一个标准集装箱超过可容纳多少更多的元素,例如2 ^ 64 OR的方式来调整std::vector通过例如将"索引" unsigned long long

c++ containers vector

-3
推荐指数
2
解决办法
622
查看次数