【发布时间】:2019-01-22 07:05:44
【问题描述】:
我很想知道如何确定字符串长度?
当我问我的老师时,他回答“你必须假设一个值并分配给 srting”。
这最终将我推向了我最初的问题,即如何假设字符串的特定长度。我曾经考虑过内存分配,即我们通常写
char str[50] = "Hello world";
这里编译器为字符串
str分配了50个字节的内存,但是只使用了10个字节,剩下的40个字节被浪费了。
那么有没有什么办法可以在用户输入字符串后分配内存呢?
【问题讨论】:
-
只要用
std::string就可以摆脱很多烦恼 -
首先,C 和 C++ 是两种截然不同的语言,在许多方面具有不同的语义。即使两种语言中的某些内容相同(或几乎相同),也请仅标记您实际编程的那个。尤其是在涉及字符串时,某些内容存在一些细微的差异,而在 C++ 中,永远不应该真正使用无论如何都是 C 风格的字符串。
-
您要的是 C 还是 C++,因为在 C++ (
std:;string) 中合适的内容在 C 中并不存在。在 C 中,您可能在 @987654327 中提供了m修饰符@ 和family,它会自动分配足够的空间。这在类 Unix 机器上并不普遍可用(例如,它在 macOS 10.14 Mojave 中不可用),但在可用的地方,它非常有用。 -
如果您想知道是否可以事先确定长度(正如@StoryTeller 所怀疑的那样),那么答案是否定的。至于如何解决或解决这个问题,现在关于语言的问题真正开始发挥作用,因为自然解决方案在 C 和 C++ 之间非常不同。
-
这个问题真的不清楚,只是因为标记 C 和 C++ 的小错误。如果您显示了代码,我们可以猜出您真正需要什么,例如minimal reproducible example 可以从解决方案提案中受益的程序。
标签: c string string-length