我是c ++的新手,所以我想我陷入了新的C ++陷阱。
我尝试执行以下操作:
QString sdkInstallationDirectory=getenv("somEnv");
QString someSourceDir=sdkInstallationDirectory+"\\Data\\"+someReference+ "\\src";
我遇到了分段错误。
我想这是因为const char的连接和分配给someSourceDir
QString的内存不足。
我的错误究竟是什么?我该怎么做这个连接?
答案 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)
谢谢大家的回答。
看来我错了,分段错误之前引起了一条线,在那里我创建了我在问题中提到的引用。
我通过进一步调试发现了它。
很抱歉这个混乱,再次感谢你!