将LPCWSTR与另一个字符串组合
combining LPCWSTR with another string
我有一个需要保存文件的类,构造函数得到一个名为fullPath的LPWSTR,然后我试图这样做(curPath是一个LPCWSTR类变量):
curPath = (std::wstring(fullPath) + L".ip").c_str();
但它最终是胡言乱语。
auto cp = std::wstring(fullPath) + L".ip";
curPath = cs.c_str();
虽然在我看来它们本质上应该做同样的事情。这是怎么回事?
由表达式(std::wstring(fullPath) + L".ip")
创建的临时std::wstring将在表达式求值后被销毁。使用这个临时对象的内部内存(由c_str公开)是未定义的行为,也是一个bug。
在第二个表达式中,您将结果保存在自动变量cp中。因此,直到当前作用域结束为止,您都可以使用变量cp的内部内存。一旦作用域结束,cp将被销毁并释放其内存。
相关文章:
- 组合字符串不适用于 libCurl,C++
- 如何组合一个宽字符字符串,中间插入一些空字符
- 从给定字符串中查找长度 k 的所有排列/组合
- 通过字符串迭代并将每个循环中的先前字符组合在一起
- 从左到右打印字符串的组合(不是排列)c++
- 在不使用递归的情况下求解所有 2D 字符串向量组合?(C++)
- 字符串向量的有效组合
- 将字符串转换为带有Isringstream的字符和INT(组合)
- Clang-Format:重新组合字符串文字
- 字符串二进制组合学
- 如何在 if/else 语句中组合字符串C++
- 我在 c++ 中组合了两个字符串,但放错了
- C Fstream字符串组合错误
- 如何使用for_each,transform,Iterator和lambda的某种组合将STD ::集合的字符串转换为小
- 在C++编程语言中,如何用n个向量长度的所有可能的字符串组合来填充向量
- 从字符串转换时,如何组合多个枚举
- C++组合两个以零结尾的字符串
- C++将字符串组合在一行中作为参数
- 将LPCWSTR与另一个字符串组合
- 调用枚举<<运算符进行字符串组合