Змінюй хід війни! Допомагай ЗСУ!

"научите меня быть девелопером".

🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #821
Каждый раз, когда вижу опусы МалэкулЙаду-а возникают два вопроса:
- нахера он страдает с плюсами?
- когда научится гуглить?

- потому, что так надо
- я умею гуглить, а посылать в гугл может только недалёкий человек, который сам там не был.

Для примера - опиши мне исходя из MSDN почему режим "а" дописывает файл нормально, а "r+" - пишет иероглифы вместо даже латинского текста.
Исходные данные: файл открыт с указанием кодировки UNICODE, или UTF-16LE(к стати, в чём отличия?), создан в ней же. проверяются режимы а и r+ при дописывании в конец файла.
Кодировка локали cp1251 используются строки wstring, что аналогично wchar_t (встринг - вектор из char_t)

Дафай. Дерзай.

P.S. Вообще - это форум. Если тебя удивляет, что люди сюда пишут - вопрос, а сам-то ты что тут делаешь?
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #822
Если я ничего не путаю, то UTF-16 - это кодировка где, как и в случае с UTF-8 может быть переменное число байт на символ.
UNICODE, он же UCS-2 - там всегда 2.
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #824
Если я ничего не путаю, то UTF-16 - это кодировка где, как и в случае с UTF-8 может быть переменное число байт на символ.
UNICODE, он же UCS-2 - там всегда 2.

⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.


ccs flag No BOM (or new file) BOM: UTF-8 BOM: UTF-16
UNICODE UTF-16LE UTF-8 UTF-16LE
UTF-8 UTF-8 UTF-8 UTF-16LE
UTF-16LE UTF-16LE UTF-8 UTF-16LE

внутренний формат Windows - всегда UTF-16LE. Этот момент следует учитывать при работе с исполняемыми файлами, использующими юникодовые версии функций WinAPI. Строки в них всегда кодируются в UTF-16LE

Нету в винде ни чего кроме 16LE встроеного. Остальное - прибамбасы.
Пишешь UNICODE - подразумеваешь -16LE, судя по таблице выше :)
Если софт под винду и с винапи - там всё будет одинаково.
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #825
LE BE - это порядок следования байтов. LE - \ = 0х005С, но в памяти будет лежать 5С00
BE - в памяти будет лежать наоборот.
UTF-16 - всегда 16 бит.
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #826
ААА!! сраный xml :D
Ну почему у него корневых тегов не может быть больше одного? ПОЧЕМУ???
Для чего эту хрень вообще придумали? И зачем люди начали его использовать?
Оно же задроченое!!! Тэг с именем из одних чисел создать нельзя. Ок (уёбки). Больше одного рута - нельзя. Ну как ещё их назвать?

спасібо.
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #827
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #828
ААА!! сраный xml :D
Ну почему у него корневых тегов не может быть больше одного? ПОЧЕМУ???
Для чего эту хрень вообще придумали? И зачем люди начали его использовать?
Оно же задроченое!!! Тэг с именем из одних чисел создать нельзя. Ок (уёбки). Больше одного рута - нельзя. Ну как ещё их назвать?

спасібо.

ты слишком нервный, тебе никто денег не даст.
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #829
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #830
ты слишком нервный, тебе никто денег не даст.

Лучше скажи как выполнить fgetws в wstring.
Он хочет покласть прочитанное в wchar_t* буфер.
Я уже спать хочу - как ему буфер переменной wstring правильно подсунуть? Без StringToCharArrayев всяких. Тупо в си. Как высунуть их wstring массив - предельно понятно. Но как ему засунуть в него - ни как не хотит.

Передача str[0] - не катит. Даже с явнім приведением типа. Ну не хочет fgets туда ничё ложить. Єксцепшен.0xC0000005: Access violation writing location 0x00000031

P.S. Янинервній. Это же ХФ. Ну куда мне ещё на изобретателей xml на орать? Не письмо же гневное им писать, чтобі уроді добавили многорутовость...
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #831
Лучше скажи как выполнить fgetws в wstring.
Он хочет покласть прочитанное в wchar_t* буфер.
Я уже спать хочу - как ему буфер переменной wstring правильно подсунуть? Без StringToCharArrayев всяких. Тупо в си. Как высунуть их wstring массив - предельно понятно. Но как ему засунуть в него - ни как не хотит.

Передача str[0] - не катит. Даже с явнім приведением типа. Ну не хочет fgets туда ничё ложить. Єксцепшен.0xC0000005: Access violation writing location 0x00000031

str.reserve(дохуя чтобы влезло)
str.data() - это подсовывай
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #832
PHP:
std::wstring str1 = L"ABCDEFG";

	FILE* file = _wfsopen(L"d:\\test.txt", L"w,ccs=UTF-16LE", _SH_DENYRW);

	fputws(str1.c_str(), file);

	fclose(file);

	std::wstring str2 = L"пиздец подкрался незаметно";
	file = _wfsopen(L"d:\\test.txt", L"r+,ccs=UTF-16LE", _SH_DENYRW);

	fseek(file, 0, SEEK_END);

	fputws(str2.c_str(), file);

	fclose(file);

Прекрасно работает и дописывает без искажений.
так что ты явно хуйню какую-то сделал.
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #833
str.reserve(дохуя чтобы влезло)
str.data() - это подсовывай

<Error reading characters of string.>

потом, есно, єксцепшен, когда я пытаюсь insert его в вектор.
Exception thrown: read access violation.
_Parent_proxy was 0x220020.

P.S. Ежели б оно работало, я б сюда и не писал.
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #834
PHP:
std::wstring str1 = L"ABCDEFG";

	FILE* file = _wfsopen(L"d:\\test.txt", L"w,ccs=UTF-16LE", _SH_DENYRW);

	fputws(str1.c_str(), file);

	fclose(file);

	std::wstring str2 = L"пиздец подкрался незаметно";
	file = _wfsopen(L"d:\\test.txt", L"r+,ccs=UTF-16LE", _SH_DENYRW);

	fseek(file, 0, SEEK_END);

	fputws(str2.c_str(), file);

	fclose(file);

Прекрасно работает и дописывает без искажений.
так что ты явно хуйню какую-то сделал.
И шо, работает на чтение файл в режиме "w"?
Єє... я не догадівался в c_str() пхать, вроде. Щас проверю. Там только с С17 можно. В С11 написано - не использовать для последовательностей символов, так как он не гарантирует, что они все подряд лежат. ХЗ... у меня 17й, вроде, в студии включен. И то про [] векторов. проверим.
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #835
Нет. Чтение не происходит. От слова совсем.
Операция совершается, но содержимого - нет в переменной.
Я сейчас про ЧТЕНИЕ.
Дописал я ещё вчера. И без того макроса, который ты применил там после кодировки, или что это за хрень
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #836
fgetws - чтение строки. В wchar_t* [] - читает без вопросов.
А я хочу в wstring прочитать.
И, вот, с ним проблема - он фактически не читает даже если команда проходит. Потом, естественно, ексцепшен при попітке его всунуть в вектор.
Уже думаю - может не выёбываться, читать в массив чаров как он просит, и уже его потом в стринг переделывать?
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #837
P.S. А, єто флаг блокировки ті применил.
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #838
Нет. Чтение не происходит. От слова совсем.
Операция совершается, но содержимого - нет в переменной.
Я сейчас про ЧТЕНИЕ.
Дописал я ещё вчера. И без того макроса, который ты применил там после кодировки, или что это за хрень

Билять.... вот как ты так можешь? :іржач:
Все работает.

PHP:
int main()
{
	std::wstring str1 = L"ABCDEFG";

	FILE* file = _wfsopen(L"d:\\test.txt", L"w,ccs=UTF-16LE", _SH_DENYRW);

	fputws(str1.c_str(), file);

	fclose(file);

	std::wstring str2 = L"пиздец подкрался незаметно";
	file = _wfsopen(L"d:\\test.txt", L"r+,ccs=UTF-16LE", _SH_DENYRW);

	fseek(file, 0, SEEK_END);

	fputws(str2.c_str(), file);

	fclose(file);

	std::wstring str3;
	str3.reserve(100);

	file = _wfsopen(L"d:\\test.txt", L"r,ccs=UTF-16LE", _SH_DENYRW);
	fgetws(const_cast<wchar_t*>(str3.data()), 100, file);

	fclose(file);

	std::wstring str = str1 + str2;

	_ASSERT(!wcscmp(str3.c_str(), str.c_str()));

	return 0;
}
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #839
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #840
Билять.... вот как ты так можешь? :іржач:
Все работает.

PHP:
int main()
{
	std::wstring str1 = L"ABCDEFG";

	FILE* file = _wfsopen(L"d:\\test.txt", L"w,ccs=UTF-16LE", _SH_DENYRW);

	fputws(str1.c_str(), file);

	fclose(file);

	std::wstring str2 = L"пиздец подкрался незаметно";
	file = _wfsopen(L"d:\\test.txt", L"r+,ccs=UTF-16LE", _SH_DENYRW);

	fseek(file, 0, SEEK_END);

	fputws(str2.c_str(), file);

	fclose(file);

	std::wstring str3;
	str3.reserve(100);

	file = _wfsopen(L"d:\\test.txt", L"r,ccs=UTF-16LE", _SH_DENYRW);
	fgetws(const_cast<wchar_t*>(str3.data()), 100, file);

	fclose(file);

	std::wstring str = str1 + str2;

	_ASSERT(!wcscmp(str3.c_str(), str.c_str()));

	return 0;
}
ХЗ может потому, что я 20 лет назад консольное приложение последний раз видел, а может потому, что после работы ещё и этим потом занимаюсь.
Приду домой по смотрю.
 
Назад
Зверху Знизу