问题标签 [stdstring]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
38553 浏览

c++ - C++ 错误:呼叫不匹配

我正在尝试用 C++ 编译以下代码

就在它说“这里发生错误”的地方,我在编译时收到以下错误:“错误:不匹配调用'(std :: string)()'。我该如何解决这个问题?

0 投票
3 回答
2579 浏览

c++ - 可以利用 std::basic_string 来实现具有长度限制的字符串吗?

我正在使用一个低级 API,它接受一个char*数字值来分别表示一个字符串及其长度。我的代码通过std::basic_string适当的翻译使用并调用这些方法。不幸的是,这些方法中的许多方法都接受不同大小的字符串长度(即 max( unsigned char)、max( short) 等),我一直在编写代码以确保我的字符串实例不超过低级 API。

默认情况下,std::basic_string实例的最大长度受size_t(max( unsigned int) 或 max( __int64))的最大值限制。有没有办法操纵实现的特征和分配器实现,std::basic_string以便我可以指定我自己的类型来代替size_t?通过这样做,我希望在实现中利用任何现有的边界检查,std::basic_string因此在执行翻译时我不必这样做。

我的初步调查表明,如果不编写我自己的字符串类,这是不可能的,但我希望我忽略了一些东西:)

0 投票
3 回答
1132 浏览

c++ - 为什么不是 std::string::max_size() == std::string::allocator::max_size()

最近我注意到以下陈述是不正确的std::string s

我发现这很有趣,默认情况下std::string将使用std::allocator<char>理论限制为size_type(-1)(是的,我知道我假设是 2 的补码,但这与实际问题无关)。我知道实际的限制会比这个少得多。在典型的 32 位 x86 系统上,内核将占用 2GB(可能是 1GB)的地址空间,而实际上限要小得多。

无论如何,GNU libstdc++std::basic_string<>::max_size()似乎返回相同的值,而不管它使用的分配器说什么(类似于1073741820)。

所以问题仍然存在,为什么不std::basic_string<>::max_size()直接返回get_allocator().max_size()?在我看来,这是假设的上限。如果分配不足,它只会抛出 a std::bad_alloc,那么为什么不尝试呢?

这比其他任何事情都更令人好奇,我只是想知道为什么这两者至少在这个实现中是分开定义的。

0 投票
6 回答
25980 浏览

c++ - 直接从 std::istream 读取到 std::string

无论如何,是否可以直接将已知数量的字节读取到 std::string 中,而无需创建临时缓冲区来执行此操作?

例如,目前我可以通过

0 投票
2 回答
981 浏览

c++ - 是否有与 LPTSTR 等效的字符串?

是否有与 LPTSTR 等效的字符串?我知道字符串和 wstring。有tstring吗?

0 投票
4 回答
4960 浏览

c++ - std::string 如何重载赋值运算符?

所以问题是

  1. 如何进行正确的 mystring& opeartor= 重载?也就是说,我怎样才能返回引用而不是指针?(我们可以在 C++ 中的引用和指针之间转移吗?)

  2. 如何使正确的 mystring operator= 重载?我认为源代码可以正常工作,但事实证明我仍然无法将 const char[] 分配给 mystring,就好像我没有重载 operator= 一样。

谢谢。

0 投票
6 回答
12836 浏览

c++ - “&s[0]”是否指向 std::string 中的连续字符?

我正在做一些维护工作,并遇到了以下情况:

我知道如果它是 std::vector,使用 &s[0] 会是安全的,但这是对 std::string 的安全使用吗?

0 投票
4 回答
6057 浏览

c++ - 如何将“指向 const TCHAR 的指针”转换为“std::string”?

我有一个类,它返回一个指向“const TCHAR”的类型化指针。我需要将它转换为 std::string 但我还没有找到一种方法来实现这一点。

谁能提供一些关于如何转换它的见解?

0 投票
2 回答
195 浏览

c++ - std::string - 从头到尾获取数据

我想在一些 2 个索引之间获取一些数据。例如,我有字符串:“just testing...”,我需要从 2 到 6 的字符串。我应该得到:'st tes'。

什么功能可以为我做到这一点?

0 投票
2 回答
375 浏览

c++ - 当编译器知道长度时,为什么不优化字符串赋值?

我今天正在玩一些计时代码,发现当将字符串文字分配给 std::string 时,它的速度大约快了 10%(使用较短的 12 字符字符串,因此对于大字符串可能会有更大的差异)这样做使用已知长度的文字(使用 sizeof 运算符)而不是。(仅用 VC9 编译器测试过,所以我猜其他编译器可能会做得更好)。

现在我怀疑的原因是它必须调用 strlen (VC9 进入汇编程序,这不是我的强项,所以我不能 100% 确定)来获取字符串长度,然后像第二种情况一样做同样的事情。

考虑到 std::string 已经存在了多长时间,以及第一种情况在现实世界的程序中有多常见(特别是如果你包含 +、=、+= 等运算符和等效方法),它为什么不优化第一种情况进入第二个?如果它是一个 std::basic_string 对象和一个文字,似乎也很简单,就好像它像 b 一样编写它?