C++ 获取向量中常量字符* [ ] 的长度
C++ Get length of const char* [ ] in vector
如何获取常量字符* 数组索引的长度?
向量:
std::vector<const char*> _infoBarText;
常量字符* []:
const char* text[4] = {"Current T:", "Target T:", "Time elapsed:", "Time remaining:"};
将 char 数组分配给向量:
_infoBarText.assign(text, text+4);
如何从向量中获取单个字符串的长度,例如"current T"
?
原始C
字符串(裸char*
-s(并不完全适合现代C++
代码。
如果您将其更改为std::vector<std::string_view>
则可以在(实际上(任何开销(鉴于您正在使用文字初始化它(的情况下解决问题,并且作为奖励,您可能会使其更安全,更可用。
有关详细信息,请参阅 cpp 首选项文章。
示例(GodBolt(:
#include <string_view>
#include <vector>
#include <iostream>
int main() {
using namespace std::literals;
std::vector<std::string_view> strs = { "hello"sv, "there"sv };
for (auto&& str: strs)
std::cout << str << str.size();
return 0;
}
GodBolt Code Insight Output(注意std::operator""sv("hello", 5ul)
(:
#include <string_view>
#include <vector>
#include <iostream>
int main()
{
using namespace std::literals;
std::vector<std::string_view> strs = std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > >{std::initializer_list<std::basic_string_view<char, std::char_traits<char> > >{std::operator""sv("hello", 5ul), std::operator""sv("there", 5ul)}, std::allocator<std::basic_string_view<char, std::char_traits<char> > >()};
{
std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > > & __range = strs;
__gnu_cxx::__normal_iterator<std::basic_string_view<char, std::char_traits<char> > *, std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > > > __begin = __range.begin();
__gnu_cxx::__normal_iterator<std::basic_string_view<char, std::char_traits<char> > *, std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > > > __end = __range.end();
for( ; __gnu_cxx::operator!=(__begin, __end); __begin.operator++() )
{
std::basic_string_view<char, std::char_traits<char> > & str = __begin.operator*();
std::operator<<(std::cout, std::basic_string_view<char, std::char_traits<char> >(str)).operator<<(str.size());
}
}
return 0;
}
漫长的道路:
#include <vector>
#include <cstring> // for strlen
std::vector<const char*> _infoBarText;
char const *str = _infoBarText[0]; // or any other valid index
auto len = std::strlen(str);
短:
auto len = std::strlen(_infoBarText[0]);
相关文章:
- constexpr 函数获取常量字符*
- 有没有办法通过使用十进制 ASCII 代码自动类型扣除来获取字符?
- 如何获取C++字符数据类型的地址
- 从格式化输入操作中获取读取字符数
- 如何从 QString 中包含的十六进制值中获取 ASCII 字符?
- 从我的 2DgridArray 中的文本文件中获取每个字符
- 如何将字符传递到find_child_by_attribute中以获取 pugixml
- 根据字符获取数组的索引
- C++ 获取向量中常量字符* [ ] 的长度
- 获取带有字符 X 的输入 X/X/etc 并用斜杠 / 分隔它
- 为什么我无法获取 MSVS2019 / C++ 中字符或uint8_t变量的内存地址?
- 如何从 c++ 中的给定标准输入中获取每个字符的偏移量?
- CPP:如何获取字符的最后一个索引
- 试图在重载函数中获取字符和字符串的输入
- 获取Unicode字符C++的十进制值
- 你能安全地从字符串的 c_str() 常量字符*中获取指向字符串的指针吗?
- 使用位于 C 字符串中的两个字符*获取子字符串
- 如何使用字符获取多个输入,使用 int 获取多个输出?C++
- c++列表字符获取问题,内存分配不好
- 从十六进制字符获取数据