Qt - C ++字符串连接分段故障

时间:2012-07-23 11:16:36

标签: c++ qt segmentation-fault string-concatenation

我是c ++的新手,所以我想我陷入了新的C ++陷阱。

我尝试执行以下操作:

QString  sdkInstallationDirectory=getenv("somEnv");

QString someSourceDir=sdkInstallationDirectory+"\\Data\\"+someReference+ "\\src";

我遇到了分段错误。

我想这是因为const char的连接和分配给someSourceDir QString的内存不足。

我的错误究竟是什么?我该怎么做这个连接?

3 个答案:

答案 0 :(得分:3)

char * getenv ( const char * name );
  

以null结尾的字符串,其中包含所请求环境的值   变量,或如果该环境变量不存在则为NULL

为什么不检查结果?

修改

因此,不需要检查指针。

  

由于历史原因,QString区分空字符串   和一个空字符串。空字符串是初始化的字符串   使用QString的默认构造函数或将(const char *)0传递给   构造函数。

答案 1 :(得分:-1)

您无法将字符串与+一起添加。尝试使用stringstream。

类似的东西:

stringstream ss;
ss << sdkInstallationDirectory << "\Data\" + someReference << "\src";
string str = ss.str();

虽然,如果您使用的是Qt,则不应将路径作为字符串加入。

请参阅How to build a full path string (safely) from separate strings?

答案 2 :(得分:-1)

谢谢大家的回答。

看来我错了,分段错误之前引起了一条线,在那里我创建了我在问题中提到的引用。

我通过进一步调试发现了它。

很抱歉这个混乱,再次感谢你!