Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;字符串与向量<;char>;_C++_String_Vector - Fatal编程技术网

C++ C++;字符串与向量<;char>;

C++ C++;字符串与向量<;char>;,c++,string,vector,C++,String,Vector,我们每个人都知道,对于所有的字符串应用程序,我们应该更喜欢C++中的string类,因为它们执行许多特殊功能,并且能够动态地增长和减少。string用于characters,vector用于其他数据类型和类,因为它显示了出色的性能 然而,在任何情况下,我们是否需要选择向量(我很少看到)而不是字符串 简而言之:如果要存储文本,那么字符串,否则向量只有在明确打算存储字符值数组(而不是字符串)时,我才会使用向量。例如,如果出于某种原因,我收集了特定文本中某个地方使用的所有字符,结果可能是一个向量 需要

我们每个人都知道,对于所有的字符串应用程序,我们应该更喜欢
C++
中的
string
类,因为它们执行许多特殊功能,并且能够动态地增长和减少。
string
用于
characters
vector
用于其他数据类型和类,因为它显示了出色的性能


然而,在任何情况下,我们是否需要选择
向量
(我很少看到)而不是
字符串

简而言之:如果要存储文本,那么
字符串
,否则
向量

只有在明确打算存储字符值数组(而不是字符串)时,我才会使用
向量
。例如,如果出于某种原因,我收集了特定文本中某个地方使用的所有字符,结果可能是一个
向量


需要明确的是:这完全是为了表达意图。

在处理二进制数据时?根本不是@NathanOliver@CppNITR如果您正在读取二进制文件,希望将其存储在
std::vector
中,请考虑任何非文本的文件(例如可执行文件),这些文件可以互换,std::string只是提供了额外的功能。
vector
是一个容器,
string
是一个字符串。你介意用一个好例子详细说明一下吗如果它是字节数组,你会使用无符号字符而不是字符吗?@quser在这种情况下,我更喜欢
vector
使用byte=char以明确它存储的是原始二进制数据,而不是字符。请参阅为什么<代码> char < /> >而不是<代码>未签名char < /代码>。C++标准库本身也使用<代码> char < />代码>,而不是<>代码>无符号char < /> >,对于二进制I/O,例如所以你可以通过
使用byte=char
@zenith来避免很多令人讨厌的强制转换。你的意思是如果我改用unsigned char会有问题吗?很清楚:这是关于表达意图的。评论不错。答案应该是正确的。我建议对答案进行一次编辑,使其更准确。你也可以对string做同样的事情,因为string也有push_back、pop_back等类型的函数uses@cdonat,我想CppNITR提出的疑问是正确的,提供一个更好的理由atleast@CppNITR是的,但这和其他问题一样,也是一个可读性问题。代码的读取器看到
string
,他们希望某些事情是真实的,其中最重要的一点是string变量包含可读的、可能可打印的文本。一个
向量
包含。它包含的内容因模板参数而异,并且内容的解释范围更广。