我已经使用现有的字符串制作了一个新字符串。假设初始字符串是
string a="sample";
新创建的字符串是
string b=a;
现在,我将空字符放在第二个索引处。
b[2]='\0';
当我尝试把b字符串放出来时。
输出显示为saple
。
我想在索引1之后结束字符串。
这是正常现象吗?如果正常,如何在第一个索引之后结束字符串。
谢谢..
operator<<
的超载std::string
。行为将与您执行以下操作不同:
char a[] = "sample";
char b[sizeof(a)];
strcpy(b, a);
b[2] = '\0';
std::cout << b;
或std::cout << b.c_str();
(将重载称为const char*
而不是std::string
)。两种重载之间的区别在于,用于确定要打印多少个字符的const char*
调用std::char_traits<char>::length
(即,直到终止的空字符)的重载。在另一方面,过载std::string
用途str.size()
。a的大小std::string
包括嵌入其中的任何空字符。1个
为了“截断”字符串,您可以遵循@Wimmel的建议并使用resize
:
std::string a = "sample";
std::string b = a;
b.resize(2);
std::cout << b;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句