NoobQuestion: 我听说填充char数组可以用null char提前终止。这是如何完成的? 我已经搜索了每一个谷歌搜索结果,但仍然有空手。C++使用null部分填充数组
1
A
回答
5
你的意思是这样的:
char test[11] = "helloworld";
std::cout << test << std::endl;
test[2] = 0;
std::cout << test;
此输出
helloworld
he
?
+0
+1,@ user481407:还请注意,由于以空字符结尾的字符串,大小是helloworld + 1的大小。 – 2010-10-20 09:09:56
1
这是一个叫做“null终止字符串”的约定。如果你有一块你认为是字符缓冲区的内存块,并且该缓冲区中有一个空字符,那么以null结尾的字符串就是从缓冲区的开始处开始并包含空字符的任何内容。
const int bufferLength = 256;
char buffer[bufferLength] = "somestring"; //10 character plus a null character put by the compiler - total 11 characters
这里编译器会在“somestring”之后放置一个空字符(即使您不要求,也会这样做)。因此,尽管缓冲区的长度为256,但所有使用以NULL结尾的字符串(如strlen()
)的函数将不会超出位置10处的空字符。
这就是“提前终止” - 无论数据是在哪超出空字符的缓冲区将被忽略设计用于以空字符终止字符串工作的任何代码。最后一部分很重要 - 代码可以很容易地忽略空字符,然后在空字符上不会发生“终止”。
相关问题
- 1. 部分从文件中填充数组
- 2. 使用数组来填充MVC/C#
- 3. 使用AS3_Val填充C数组
- 4. 使用2个数组填充部分tableview
- 5. 在JList中使用部分填充的数组
- 6. 使用部分字符串填充二维数组
- 7. 如何在C中创建一个部分填充的数组#
- 8. 使用数组填充UITableView
- 9. javascript - 使用填充数组
- 10. 使用NSDictionary填充数组
- 11. 使用JOptionPane填充数组
- 12. 使用JLabels填充数组
- 13. 使用数组填充UITableView
- 14. 使用reshape2填充数组
- 15. 使用数组填充ListView
- 16. C++填充二维数组
- 17. 用数据填充TableView部分?
- 18. 使用数组数组来填充NSTableView
- 19. 部分填充数组,删除重复数组
- 20. 使用表格填充其余部分
- 21. AJAX调用外部数组填充
- 22. 使用plist填充分组表
- 23. C:使用填充填充圆形
- 24. 用C中的数组填充Xaml#
- 25. 用C填充一个数组0
- 26. JNA问题 - 仅使用从Java填充的部分数组由DLL使用
- 27. 使用数组填充组合框
- 28. 如何创建部分填充使用LINQ C#
- 29. 填充数组
- 30. 填充数组
你想用这个做什么? – 2010-10-20 08:25:22
对不起,但这是模糊地回答。 (为什么_filling_会提前终止,取决于数组中要读取的内容来填充?)您可能想要改进该问题。现在我投票结束了。 – sbi 2010-10-20 08:31:56