【发布时间】:2013-01-16 19:26:06
【问题描述】:
我不一定想这样做,但我很好奇。在 C/C++ 中有没有办法定义字符串终止符 other 而不是空终止符?比如,能不能这样写,
char* str = "123456|ABCDEF";
char* foo = str;
char* bar = strstr(str, "|") + 1;
// do something here to define '|' as a terminator
std::cout << foo << std::endl;
std::cout << bar << std::endl;
// undo pipe-as-terminator definition
并获得输出,
123456
ABCDEF
?
如果不可能,那么是否有任何方法来获取指向缓冲区部分的指针,不分配/复制内存,以及不修改缓冲区,即将|s 覆盖为\0s?
【问题讨论】:
-
不。虽然在某些情况下它可能很好,但零/空/无/任何东西的概念已经深深植根于任何地方的逻辑中,无法改变。
-
std::cout << bar << std::endl;不会是 UB,因为它没有终止? -
@LuchianGrigore:大声笑...如果您阅读标题,则不是这样:除了空终止符。
-
@DavidRodríguez-dribeas 不,我没有。
标签: c++ c string performance null-terminated