相关疑难解决方法(0)

将nullptr分配给std :: string是安全的吗?

我正在开展一个小项目并遇到以下情况:

std::string myString;
#GetValue() returns a char*
myString = myObject.GetValue();
Run Code Online (Sandbox Code Playgroud)

我的问题是如果GetValue() 返回NULL myString变为空字符串?这是不确定的?还是会发生段错?

c++ string c++-standard-library

23
推荐指数
4
解决办法
1万
查看次数

应该std :: copy()或std :: move()的空范围是否需要有效的目的地?

std::move(),因为它检测到在Visual Studio 2013(与调试配置)编译时在下面的代码发出警告,运行时dest是一个nullptr.但是,源范围是空的,因此dest永远不应该访问.C++标准可能不清楚是否允许这样做?它声明: 要求:结果不应在[first,last]范围内. A nullptr似乎满足了这个要求.

#include <vector>
#include <algorithm>

int main() {
    std::vector<int> vec;
    int* dest = nullptr;
    // The range [begin(vec),end(vec)) is empty, so dest should never be accessed.
    // However, it results in an assertion warning in VS2013.
    std::move(std::begin(vec), std::end(vec), dest);
}
Run Code Online (Sandbox Code Playgroud)

c++ visual-studio c++11

10
推荐指数
1
解决办法
1406
查看次数

标签 统计

c++ ×2

c++-standard-library ×1

c++11 ×1

string ×1

visual-studio ×1