ASCII ценность ничего - PullRequest
       9

ASCII ценность ничего

2 голосов
/ 11 ноября 2008

Есть ли в C ++ значение ascii, которое я могу поместить в символ, который ничего не представляет? Я попробовал 0, но в итоге он испортил мой файл, поэтому я не могу его прочитать.

Ответы [ 6 ]

6 голосов
/ 11 ноября 2008

ASCII 0 - ноль. Кроме этого, в традиционном ASCII нет символов «ничего». При необходимости вы можете использовать управляющий символ, такой как SOH (начало заголовка), STX (начало текста) или ETX (конец текста). Их значения ASCII равны 1, 2 и 3 соответственно.

Полный список кодов ASCII, которые я использовал для этого объяснения, см. на этом сайте

3 голосов
/ 11 ноября 2008

В исходном файле C ++ '\ 0' представляет 0 байт. Однако строки C ++ обычно заканчиваются нулем, что означает, что '\ 0' представляет конец строки - что может быть причиной того, что испортил ваш файл.

Если вы действительно хотите сохранить 0 байт в файле данных, вам нужно использовать другую кодировку. Для упрощения можно использовать другой символ - например, 0xFF - который не отображается в ваших данных, или какой-либо формат длины / данных или что-то подобное.

Какую бы кодировку вы не выбрали, приложение, пишущее файл, и приложение, которое его читает, должны согласовать кодировку. И это совершенно новый кошмар.

3 голосов
/ 11 ноября 2008

Конечно. Используйте любое символьное значение, которое не будет отображаться в ваших обычных данных. Обычно это текстовый файл с разделителями. Популярные варианты разделителей включают пробелы, табуляции, запятые, точки с запятой, символы вертикальной черты и тильду.

1 голос
/ 11 ноября 2008

Вы имеете в виду значение, которое вы можете написать, которое фактически не изменит файл? Ответ: нет .

Возможно, опубликуйте немного больше о том, чего вы пытаетесь достичь.

1 голос
/ 11 ноября 2008

Нулевой символ '\ 0' по-прежнему занимает байт.

Распознает ли ваша программа нулевой символ как символ конца файла?

Если ваше программное обеспечение читает этот файл, вы можете определить символ-заполнитель (тот, который не совпадает с данными), но вам также нужно будет обработать этот символ. Например, скажите «*» - ваш местозаполнитель. Вы прочтете этот символ, но не добавите его в структуру, в которой хранятся ваши данные. Он по-прежнему будет занимать место в вашем файле, но не будет занимать место в вашей структуре данных.

Я отвечаю на ваш вопрос или пропускаю его?

0 голосов
/ 11 ноября 2008

это будет зависеть от того, какой это файл и кто его анализирует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...