【发布时间】:2016-11-24 16:44:30
【问题描述】:
我有一个指向未知长度缓冲区的 char 指针:
char* buffer;
如果 N!=0,我需要将前 N 个(N 是输入变量)字符复制到 std::string。 我当前的代码是:
int N = <something>;
std::string text;
if (N != 0)
text.assign(buffer, N);
else
text.assign(buffer);
我不喜欢的是,当缓冲区的大小小于 N 时,生成的文本大小为 N。
标准库中是否有任何函数可以将缓冲区的前 N 个字符复制到文本而不强制文本大小为 N?
即如果缓冲区只有 1 个字符且 N = 100,我想要 text.size() = 1
解决方案是逐个字节的自定义副本吗?
【问题讨论】:
-
如果您使用 C++,最好使用
std::string以及相关的方法和运算符 -
如果您需要知道字符串的长度,我们共享宇宙的基本物理定律要求扫描字符串,直到找到终止的
'\0字节。没有捷径可走。 -
@SamVarshavchik 我不需要知道缓冲区的长度。我只需要复制拳头N个字符。
-
@GovindParmar 我正在使用 C 和 C++,因为代码将 C 软件与 C++ 软件连接起来
-
但是您已经清楚地解释了您确实需要知道字符串的长度才能正确执行此操作。这几乎可以达成交易。
标签: c++