【发布时间】:2020-03-28 05:57:28
【问题描述】:
所以我只想将 int 转换为数字并将其存储在数组中
例如
int n=456;
std::string nstr = std::to_string(n);
std::cout << nstr[0];
现在我只想要nstr的长度...
每当我使用std::strlen(nstr);
它给出一个错误
**error: cannot convert 'std::__cxx11::string' {aka 'std::__cxx11::basic_string<char>'} to 'const char*'**
请告诉我如何将std::__cxx11::string 转换为std::string
或者有没有其他方法可以计算nstr的长度
【问题讨论】:
-
为什么使用
strlen()而不是std::string::size()? -
strlen用于字符数组,你可以使用nstr..size() -
std::string有一个size和length成员函数可以为您执行此操作。strlen用于 c 字符串,而不是std::strings -
不仅使用
strlen()不正确,对strlen()的调用是O(n)操作,其中n是字符数(包括)终止空值。对size()的调用是O(1)操作,因为std::string知道存储的字符数而无需查找空值。因此,即使您的代码可以使用strlen,它也比使用size慢。 -
std::__cxx11::string是std::string。您的错误显然是关于转换为const char*,而不是转换为std::string,所以我不明白您为什么在问题标题和正文中询问后者...
标签: c++ string c++11 casting stdstring