看一看這段代碼C++:在文本文件中存儲char數組時,Null是否被存儲?
ofstream obj("output.txt");
obj<<"Hello World";
在這裏,我發送到文本文件「output.txt中」的字符數組的「Hello World」
現在字符數組是必須在年底終止空他們。
所以,當我發送字符數組到文本文件「output.txt」,終止null是否被髮送和存儲以及爲什麼?
看一看這段代碼C++:在文本文件中存儲char數組時,Null是否被存儲?
ofstream obj("output.txt");
obj<<"Hello World";
在這裏,我發送到文本文件「output.txt中」的字符數組的「Hello World」
現在字符數組是必須在年底終止空他們。
所以,當我發送字符數組到文本文件「output.txt」,終止null是否被髮送和存儲以及爲什麼?
考慮,如果你寫了幾次的文件會發生什麼:
ofstream output("myfile.txt");
output << "Hello";
output << " ";
output << "world";
如果一個字符串結束在每次你寫的東西到文件中,當你寫的第二次系統將不得不時間增加在文件中找到零,刪除它,然後在新文本之後再次添加它。而且,系統必須以不同的方式實現輸出到例如控制檯。
所以回答你的問題:不,終止符不寫。它只被內存中的字符串用於函數,以知道字符串在內存中的位置。
要添加,如果使用output.write(),則取決於您如何調用它,如果需要,可以寫入null。 –
@RobertMason如果字符串不是文字,而是'std :: string',它們也可以包含nul個字符。 –
@RobertMason當然,但是這是_you_誰決定寫它而不是底層系統。 –
不可以。空終止正是C/C++用來知道字符串結束的地方。
請注意,如果讓它在您真正想要的字符後面寫入一個0x00字節,將會非常令人討厭地失去控制。然後,只寫出你想要的字符會有點麻煩。
如果用「C/C++」表示「處理零終止字符串的函數」。 –
@MikeSeymour我想我的意思是說C標準是如何定義一個字符串的,儘管你肯定是對的,它只與處理它們的函數有關。在C++中,這不會像在C中那樣普遍。 – David
您可以使用十六進制編輯器輕鬆檢查此問題。 – Indy9000