powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / почему printf не печатает строку в консоли ?
87 сообщений из 87, показаны все 4 страниц
почему printf не печатает строку в консоли ?
    #39974981
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#include <wctype.h>
#include <errno.h>
#include <locale.h>

int main(int argc, char **argv) {
	wchar_t ch;
	setlocale(LC_ALL, "en_US.utf8");
	short end_of_word = 0;
	FILE *fp;
	fp = fopen("data/sample.txt", "r");
	if (fp == NULL) {
		printf("Unable to open the file.\n");
		return 1;
	}

	while( !feof(fp) ) {
		ch = fgetwc(fp);
		while(iswalpha(ch)) {
			putwchar(ch);
			ch = fgetwc(fp);
			end_of_word = 1;
		}

		if (end_of_word) {
			putwchar(' ');
			end_of_word = 0;
		}

	}
	putwchar('\n');
        
        // вот эта строка не печатается. почему?
	printf("\n*** END OF FILE ***\n");
	return 0;
}
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39974993
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм...

Вот этот цикл КМК имеет слабо-доказуемое условие останова.

Код: plaintext
1.
while(iswalpha(ch)) {
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975000
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#include <wctype.h>
#include <errno.h>
#include <locale.h>

int main(int argc, char **argv) {
	wchar_t ch;
	setlocale(LC_ALL, "en_US.utf8");
	short end_of_word = 0;
	FILE *fp;
	fp = fopen("data/sample.txt", "r");
	if (fp == NULL) {
		printf("Unable to open the file.\n");
		return 1;
	}
        // если добавить эту строку, то все норм распечатывается
	printf("\n*** BEGINNING OF FILE ***\n");
	while( !feof(fp) ) {
		ch = fgetwc(fp);
		while(iswalpha(ch)) {
			putwchar(ch);
			ch = fgetwc(fp);
			end_of_word = 1;
		}

		if (end_of_word == 1) {
			putwchar(' ');
			end_of_word = 0;
		}

	}
	putwchar('\n');

    // вот эта строка не печатается. почему?
	printf("\n*** END OF FILE ***\n");
	return 0;
}
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975001
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblab,

Ваша проблема элементарно решается в отладчике. И можно было бы конкретизировать вопрос.
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975003
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblab,

И кстати, а почему у вас кодировка utf8, а читаете вы wchar_t? Это разные вещи ваще. :)
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975005
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Хм...

Вот этот цикл КМК имеет слабо-доказуемое условие останова.

Код: plaintext
1.
while(iswalpha(ch)) {



проблемы с бесконечным циклом тут нет:
в самом крайнем случае мы дойдем до конца файла, и ch получит значение (W)EOF, тогда цикл должен остановиться
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975009
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
mini.weblab,
И кстати, а почему у вас кодировка utf8, а читаете вы wchar_t? Это разные вещи ваще. :)


1)
а чем же читать utf8???
2)
а на что смотреть в отладчике?

в общем, petrav, говорите, что нужно сделать, потому что я застряла
:-)
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975010
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblab
mayton
Хм...

Вот этот цикл КМК имеет слабо-доказуемое условие останова.

Код: plaintext
1.
while(iswalpha(ch)) {



проблемы с бесконечным циклом тут нет:
в самом крайнем случае мы дойдем до конца файла, и ch получит значение (W)EOF, тогда цикл должен остановиться

Обоснуй почему обрамляющий цикл должен завершиться. Там break? Или throw exception?
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975015
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblab
petrav
mini.weblab,
И кстати, а почему у вас кодировка utf8, а читаете вы wchar_t? Это разные вещи ваще. :)


1)
а чем же читать utf8???
2)
а на что смотреть в отладчике?

в общем, petrav, говорите, что нужно сделать, потому что я застряла
:-)

Если файл в utf-8 то каждый символ занимает от одного до четырёх байт. Вы символы пытаетесь читать в 2-ва байта и анализировать. Не знаю как это может работать, а если в файле ещё и BOM...

В отладчике смотреть, что за данные, почему зациклились и т.д.
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975017
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
	while( !feof(fp) ) { 
        /* этот цикл завершится, когда дойдем до конца файла */
		ch = fgetwc(fp);
		while(iswalpha(ch)) { 
                 /* этот цикл завершится когда дочитаем до конца файла, ch получит значение EOF (non alphabetic character!) */
			putwchar(ch);
			ch = fgetwc(fp);
			end_of_word = 1;
		}

		if (end_of_word) {
			putwchar(' ');
			end_of_word = 0;
		}

	}


feof: https://en.cppreference.com/w/c/io/feof
iswalpha: https://en.cppreference.com/w/c/string/wide/iswalpha
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975019
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(раскачиваясь на стуле)

Не знаю. Не нравится мне такой подход. Есть функция. iswalpha()
У нее - детерминированное поведение для символов. EOF - это аналог null.
Отсутствие символа. В некоторых источниках пишут что EOF = -1
И кажется где-то у нас даже топик был по поводу EOF. Копья ломали...

Не знаю. Не могу я принять такое в code-review. Какая-то кастомизация.
А если-б EOF был равен "дохлой корове" ?
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975022
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblab, а ты, дорогая мне не кидай линки на справочник. Твоя позиция - слабая.
Твой код - нерабочий. И ты здесь доказываешь правоту неработающего кода просто
вместо того чтобы устранить спорный момент или просто code-smell.

Ну пиши больше code-smells. Разви-ж я тебя остановлю? Дай бох чтоб коллеги критиковали.
Мой-то совет тебе я так понимаю не нужен.

Что отладчик показывает? Зациклилась?
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975023
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
1)
у меня wchar_t занимает 4 байта (я знаю, что размер wchar_t зависит от компилятора и это плохое решение)
2)
как же мне прочитать UTF8?? (чтобы можно было функции использовать из wchar.h ??)
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975025
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblab
petrav,
1)
у меня wchar_t занимает 4 байта (я знаю, что размер wchar_t зависит от компилятора и это плохое решение)
2)
как же мне прочитать UTF8?? (чтобы можно было функции использовать из wchar.h ??)

Не знаю. Там вообще много подводных камней. Я бы читал сразу целыми строками, а не посимвольно.
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975027
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
mini.weblab, а ты, дорогая мне не кидай линки на справочник. Твоя позиция - слабая.
Твой код - нерабочий. И ты здесь доказываешь правоту неработающего кода просто
вместо того чтобы устранить спорный момент или просто code-smell.

Ну пиши больше code-smells. Разви-ж я тебя остановлю? Дай бох чтоб коллеги критиковали.
Мой-то совет тебе я так понимаю не нужен.

Что отладчик показывает? Зациклилась?


линки я для удобства накидала, а не потому что в тебе сомневаюсь :-)
я не доказываю свою правоту, просто я объясняю, почему я так сделала,
уж я-то знаю что код не рабочий, но не могу понять почему.
просто если я не объясню почему я так сделала, как же ты поймешь, что мне непонятно?

а конструктивную критику я во внимание всегда принимаю
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975029
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblab
mayton
mini.weblab, а ты, дорогая мне не кидай линки на справочник. Твоя позиция - слабая.
Твой код - нерабочий. И ты здесь доказываешь правоту неработающего кода просто
вместо того чтобы устранить спорный момент или просто code-smell.

Ну пиши больше code-smells. Разви-ж я тебя остановлю? Дай бох чтоб коллеги критиковали.
Мой-то совет тебе я так понимаю не нужен.

Что отладчик показывает? Зациклилась?


линки я для удобства накидала, а не потому что в тебе сомневаюсь :-)
я не доказываю свою правоту, просто я объясняю, почему я так сделала,
уж я-то знаю что код не рабочий, но не могу понять почему.
просто если я не объясню почему я так сделала, как же ты поймешь, что мне непонятно?

а конструктивную критику я во внимание всегда принимаю

Добавь вывод текущего символа на экран в hex code. И мы быстро диагностируем проблему.
Код: plaintext
1.
2.
3.
while( !feof(fp) ) {
 ch = fgetwc(fp);
 printf("Fucken hex code : ....", ch);
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975031
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
1)
по строка прочитать не проблема, только я не понимаю, как это может помочь
проблема в том, что в стандатной библиотеке, нет стандартного решения для работы с UTF8, т.е надо брать либо готовую библиотеку, которая уже умеет это делать, либо писать все с нуля

2)
я не знаю на что смотреть в дебагере, я прошлась по всем командам, и зацикливания не было, но
последний printf в первом примере кода почему-то не выводится (а во втором - все нормально)
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975033
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblabкак же мне прочитать UTF8?? (чтобы можно было функции использовать из wchar.h ??)

Читай как char. Потом перекодируй в wchar_t любым доступным способом: от iconv до
самопальной процедуры в пять строчек.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975037
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
1) последние строки после файлового текста не печатаются
Код: plaintext
1.
2.
(gdb) print ch
$1 = -1 L'\xffffffff'



2) все нормально распечатывается
Код: plaintext
1.
2.
(gdb) print ch
$1 = -1 L'\xffffffff'


Это я в printf напечатала
ch last: 000000000000000000000000FFFFFFFF
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975051
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblab
petrav,
1)
по строка прочитать не проблема, только я не понимаю, как это может помочь
проблема в том, что в стандатной библиотеке, нет стандартного решения для работы с UTF8, т.е надо брать либо готовую библиотеку, которая уже умеет это делать, либо писать все с нуля


Читаешь сразу всю строку в char[], потом попробуй std::mbrlen. Но что дальше делать я не знаю если нужно работать именно в utf-8.

mini.weblab
2)
я не знаю на что смотреть в дебагере, я прошлась по всем командам, и зацикливания не было, но
последний printf в первом примере кода почему-то не выводится (а во втором - все нормально)

Ну да что-то странное у тебя творится или ты воспринимаешь странно.
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975065
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,

общая задача была прочитать и вывести все слова из файла.

1) я хотела сделать бэкэнд для WordCloud, поэтому UTF8 (это для практики)

2) по поводу пункта 2: я там вижу один баг: незакрытый файл. но это не объяснятет странное поведение printf.
выглядит так как будто там разные потоки для putwchar и printf
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975076
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Норм. Печатается вроде-бы

Код: plaintext
1.
2.
3.
4.
5.
6.
mayton@ryzen-ssd:~/cpp$ ./word_count.exe word_count.c 

*** BEGINNING OF FILE ***
include stdio h include stdlib h include wchar h include wctype h include errno h include locale h int main int argc char argv wchar t ch setlocale LC ALL en US utf short end of word FILE fp if argc printf nUsage word count filename n n fp fopen argv r if fp NULL printf Unable to open the file n return 5A;8 4>1028BL MBC AB@>:C B> 2A5 =>@< @0A?5G0BK205BAO printf n BEGINNING OF FILE n while feof fp ch fgetwc fp while iswalpha ch putwchar ch ch fgetwc fp end of word if end of word putwchar end of word putwchar n 2>B MB0 AB@>:0 =5 ?5G0B05BAO ?>G5<C printf n END OF FILE n return 

*** END OF FILE ***



Код: plaintext
1.
gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04) 



Версия о раздельных буферах для форматной печати - правдоподобна. Надо просто почитать об этом.
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975089
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переделал немного. Для сплита на слова - удобнее не альфа-символы проверять а все-все символы
что не являются разделителями. Так точнее.

Да этот BOM еще мешает спереди.

readme.txt
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Съешь еще этих грёбаных французских булок да выпей йаду.

Hoola-hoola girls like hooligans.

Быстрая коричневая лиса прыгнула через ленивого собака.

If you want to fuck so funny - fuck yourself and save a money.



word_count.c
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#include <wctype.h>
#include <errno.h>
#include <locale.h>

int main(int argc, char **argv) {
    wchar_t ch;
    setlocale(LC_ALL, "en_US.utf8");
    short end_of_word = 0;
    FILE *fp;
    if (argc == 0) {
        printf("\nUsage: word_count [filename]\n\n");
        return 1;
    }
    fp = fopen(argv[1], "r");
    if (fp == NULL) {
	printf("Unable to open the file.\n");
	return 1;
    }
    
    wchar_t prev_ch = fgetwc(fp);
    if (!iswspace(ch)) {
        putwchar(ch);
    }

    while(!feof(fp) ) {
	ch = fgetwc(fp);
        if (!iswspace(ch)) {
            putwchar(ch);
        } else if (!iswspace(prev_ch) && iswspace(ch)) {
	    putwchar('\n');
        } 
        prev_ch = ch;
    }

    return 0;
}



Вот здесь первый символ - херня какая-то. Чортов бим-бом.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
mayton@ryzen-ssd:~/cpp$ ./word_count.exe readme.txt 
&#32765;ъешь
еще
этих
грёбаных
французских
булок
да
выпей
йаду.
Hoola-hoola
girls
like
hooligans.
Быстрая
коричневая
лиса
прыгнула
через
ленивого
собака.
If
you
want
to
fuck
so
funny
-
fuck
yourself
and
save
a
money.



Вообще надо на С++ переходить.
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975090
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот этот же текстовый файл - сквозь призму hexdump.

Вобщем первые два байта d0 a1 - это как раз буква "C" в первом предложении. BOM-заголовка нет.
Так мой Midnight Commander создает текстовые файлы utf-8. А наше приложение что-то имеет
на этот счет. И глотает первую букву оставляя мусор.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
mayton@ryzen-ssd:~/cpp$ hexdump -C readme.txt 
00000000  d0 a1 d1 8a d0 b5 d1 88  d1 8c 20 d0 b5 d1 89 d0  |.......... .....|
00000010  b5 20 d1 8d d1 82 d0 b8  d1 85 20 d0 b3 d1 80 d1  |. ........ .....|
00000020  91 d0 b1 d0 b0 d0 bd d1  8b d1 85 20 d1 84 d1 80  |........... ....|
00000030  d0 b0 d0 bd d1 86 d1 83  d0 b7 d1 81 d0 ba d0 b8  |................|
00000040  d1 85 20 d0 b1 d1 83 d0  bb d0 be d0 ba 20 d0 b4  |.. .......... ..|
00000050  d0 b0 20 d0 b2 d1 8b d0  bf d0 b5 d0 b9 20 d0 b9  |.. .......... ..|
00000060  d0 b0 d0 b4 d1 83 2e 0a  0a 48 6f 6f 6c 61 2d 68  |.........Hoola-h|
00000070  6f 6f 6c 61 20 67 69 72  6c 73 20 6c 69 6b 65 20  |oola girls like |
00000080  68 6f 6f 6c 69 67 61 6e  73 2e 0a 0a d0 91 d1 8b  |hooligans.......|
00000090  d1 81 d1 82 d1 80 d0 b0  d1 8f 20 d0 ba d0 be d1  |.......... .....|
000000a0  80 d0 b8 d1 87 d0 bd d0  b5 d0 b2 d0 b0 d1 8f 20  |............... |
000000b0  d0 bb d0 b8 d1 81 d0 b0  20 d0 bf d1 80 d1 8b d0  |........ .......|
000000c0  b3 d0 bd d1 83 d0 bb d0  b0 20 d1 87 d0 b5 d1 80  |......... ......|
000000d0  d0 b5 d0 b7 20 d0 bb d0  b5 d0 bd d0 b8 d0 b2 d0  |.... ...........|
000000e0  be d0 b3 d0 be 20 d1 81  d0 be d0 b1 d0 b0 d0 ba  |..... ..........|
000000f0  d0 b0 2e 0a 0a 49 66 20  79 6f 75 20 77 61 6e 74  |.....If you want|
00000100  20 74 6f 20 66 75 63 6b  20 73 6f 20 66 75 6e 6e  | to fuck so funn|
00000110  79 20 2d 20 66 75 63 6b  20 79 6f 75 72 73 65 6c  |y - fuck yoursel|
00000120  66 20 61 6e 64 20 73 61  76 65 20 61 20 6d 6f 6e  |f and save a mon|
00000130  65 79 2e 0a                                       |ey..|
00000134
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975098
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
А вот этот же текстовый файл - сквозь призму hexdump.

Вобщем первые два байта d0 a1 - это как раз буква "C" .


я с тобой не согласна, d0 a1 это 4 байта, а вообще последнее время ты слишком бурно на все реагируешь.
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975109
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибки проверять Пушкин будет?..
man fwgetcIf a wide-character conversion error occurs,
it sets errno to EILSEQ and returns WEOF.
Ну и указывать же надо кодировку, не полагаясь на неестественный интеллект:
man fopenIn addition to the above characters, fopen() and freopen() support
the following syntax in mode:

,ccs=string

The given string is taken as the name of a coded character set and
the stream is marked as wide-oriented.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975119
a guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mini.weblab
Код: plaintext
1.
wchar_t

Брось это и больше никогда не подбирай.
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975130
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblab
как же мне прочитать UTF8?? (чтобы можно было функции использовать из wchar.h ??)

UTF8 - это боль. Сишники его ненавидят. Конвертируй файл в кои-8р.
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975135
a guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
crutchmaster
mini.weblab
как же мне прочитать UTF8?? (чтобы можно было функции использовать из wchar.h ??)

UTF8 - это боль. Сишники его ненавидят. Конвертируй файл в кои-8р.
Ъ-пацаны юзают цопе 866.
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975137
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a guest,

Это для ностальгирующих мсдос олдфагов. Для современных пацанов - только бнопня кои8р! Потому что её можно прочитать, после потери 8-го бита!
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975144
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
Для современных пацанов - только бнопня кои8р! Потому что её можно прочитать, после потери 8-го бита!
мастодонтов
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975150
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

Ну и ломайте себе голову на си со своим хрюникодом!
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975166
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblab
mayton
А вот этот же текстовый файл - сквозь призму hexdump.

Вобщем первые два байта d0 a1 - это как раз буква "C" .


я с тобой не согласна, d0 a1 это 4 байта, а вообще последнее время ты слишком бурно на все реагируешь.

Точно 4 ?
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975167
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
mini.weblab
пропущено...


я с тобой не согласна, d0 a1 это 4 байта, а вообще последнее время ты слишком бурно на все реагируешь.

Точно 4 ?

Буквы же четыре — значит и байта четыре. :)
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975168
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мда... нас ждут большие трудности впереди.
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975177
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
mini.weblab
как же мне прочитать UTF8?? (чтобы можно было функции использовать из wchar.h ??)

UTF8 - это боль. Сишники его ненавидят. Конвертируй файл в кои-8р.

Будет вам. Толстые тролищи.

Почему UTF8 - боль для С++? Почему это ниразу ни боль для сишарпа?
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975185
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
crutchmaster
пропущено...

UTF8 - это боль. Сишники его ненавидят. Конвертируй файл в кои-8р.

Будет вам. Толстые тролищи.

Почему UTF8 - боль для С++? Почему это ниразу ни боль для сишарпа?

C# же строки хранит в utf-16.

Кстати, почему у комьюнити проявляется такая ненависть к wchar_t, но нет ненависти к QString? Ведь это же одно и тоже.

Питон 3 тоже, кажется, строки в utf-16 хранит.
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975187
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblab,
Он печатает, и выводит.

Просто ты это не видишь.
Скорее всего, программа завершается некорректно ДО этого вывода.
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975190
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Почему UTF8 - боль для С++? Почему это ниразу ни боль для сишарпа?

В сишарпах и явах это всё спрятано под копот в виде какого-нибудь utf16/32, строки хешированы, с посчитанной длинной и т.д. В плюсах тоже надо переводить во что-нибудь с фиксированным числом байт и так уже работать. А utf8 - это вообще боль хоть для кого, просто не все его трогают руками. Посмотри на zalgo-пасту, например ( https://lingojam.com/ZalgoText ). Как это говно парсить вообще? Там может быть длинна строки хоть сколько, а символа 4.
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975202
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
mayton
Почему UTF8 - боль для С++? Почему это ниразу ни боль для сишарпа?

В сишарпах и явах это всё спрятано под копот в виде какого-нибудь utf16/32, строки хешированы, с посчитанной длинной и т.д. В плюсах тоже надо переводить во что-нибудь с фиксированным числом байт и так уже работать. А utf8 - это вообще боль хоть для кого, просто не все его трогают руками. Посмотри на zalgo-пасту, например ( https://lingojam.com/ZalgoText ). Как это говно парсить вообще? Там может быть длинна строки хоть сколько, а символа 4.

Есть линуксовая утилита. Iconv. Это такой себе швейцарский армейский нож для кодировок.
Конвертит из любых кодовых страниц в любые. В лучших традициях "C" Linux она должна
быть разработана на сях. И в ней каким-то образом должны быть уже решены все
задачи которые мы тут подняли.
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975237
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Есть линуксовая утилита. Iconv.

Так я о том и говорю. Надо сделать iconv в кои8р, например, и там уже всё сведётся к перебору байт. А трогать прямо руками utf8 - не надо. Там не всё так однозначно.
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975239
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я тебя прошу. Давай koi8 забудем как страшный архаизм.
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975243
a guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
petrav
C# же строки хранит в utf-16.
Ну так это легаси. била гейца поимела пропаганда что 16 бит хватит всем, вот в NT засунули двухбайтовую кодировку. Теперь мучаются, тащат везде это УГ.
petrav
Питон 3 тоже, кажется, строки в utf-16 хранит.
В CPython 3.3+ в плане представления строк вообще цирк с конями . Кажется, ничего более идиотского придумать нельзя.
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975246
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a guest
petrav
C# же строки хранит в utf-16.
Ну так это легаси. била гейца поимела пропаганда что 16 бит хватит всем, вот в NT засунули двухбайтовую кодировку. Теперь мучаются, тащат везде это УГ.
petrav
Питон 3 тоже, кажется, строки в utf-16 хранит.
В CPython 3.3+ в плане представления строк вообще цирк с конями . Кажется, ничего более идиотского придумать нельзя.

Ну а что насчёт QString? Там тоже utf-16. Тоже поимела пропаганда?

Я вообще всей этой дури понять не могу. Я сделал бы wchar_t размером шесть байт и закрыл бы проблему просто и навсегда. Текст занимает минимальный размер в памяти по сравнению со всем остальным. Если есть террабайтные библиотеки, ну там можно архиватор применить.
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975250
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Я тебя прошу. Давай koi8 забудем как страшный архаизм.

Что это архаизм? Я знаю целых 2 человека, которые на полном серьёзе во всю юзают кои8р!
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975254
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a guest
Ну так это легаси. била гейца поимела пропаганда что 16 бит хватит всем, вот в NT засунули двухбайтовую кодировку. Теперь мучаются, тащат везде это УГ.

преобоазования между utf-8, utf-16, utf-32 тривиальны
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975271
a guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
petrav
Ну а что насчёт QString? Там тоже utf-16. Тоже поимела пропаганда?
Как ты думаешь, на какой API ориентировались разработчики кьюта?
petrav
Я вообще всей этой дури понять не могу. Я сделал бы wchar_t размером шесть байт
На всякий случай лучше 6.5 байт.
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975272
a guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропил
a guest
Ну так это легаси. била гейца поимела пропаганда что 16 бит хватит всем, вот в NT засунули двухбайтовую кодировку. Теперь мучаются, тащат везде это УГ.

преобоазования между utf-8, utf-16, utf-32 тривиальны
И бесплатны. Даже отрицательные по стоимости — чем больше преобразований, тем быстрее программа работает.
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975294
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a guest
petrav
Ну а что насчёт QString? Там тоже utf-16. Тоже поимела пропаганда?
Как ты думаешь, на какой API ориентировались разработчики кьюта?

Без понятия.
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975301
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a guest
Изопропил
пропущено...

преобоазования между utf-8, utf-16, utf-32 тривиальны
И бесплатны. Даже отрицательные по стоимости — чем больше преобразований, тем быстрее программа работает.

предлагаешь utf-32 всегда и везде?
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975318
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
В плюсах тоже надо переводить во что-нибудь с фиксированным числом байт и так уже работать.
Только так оно работать не будет. Почти никогда не будет работать.

P.S.
Выкидывать надо UTF-16/-32, как рассадник опасных иллюзий.
Это уже даже до мелкомягких дошло.
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975330
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я заметил что любой топик с кодировками всегда скатывается к обсуждению внутреннего представления строк
таких как char *, wchar_t *, char16_t *, char32_t std::string, CString, TString, AnsiString, QString e.t.c.

Как будто-бы есть какая-то недосказанность. Или несовершенство.
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975333
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Как будто-бы есть какая-то недосказанность. Или несовершенство.

Есть одна совершенная кодировка, ну ты понял, какая.

Basil A. Sidorov
Только так оно работать не будет. Почти никогда не будет работать.

Почему это?
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975400
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
Почему это?
В реалиях юникода, порочна сама идея представить символ (алфавита) фиксированным числом байт. По факту тип "char" в значении "символ (какого-то) алфавита" надо просто выкидывать из библиотек и языков программирования.
А в ситуации, когда у вас есть (только) "массив байт, представляющий строку символов", фундаментальным преимуществом UTF-8 становится обратная совместимость с US-ASCII.
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975424
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorovфундаментальным преимуществом UTF-8 становится обратная совместимость с US-ASCII.

Ага, то есть тем самым char фиксированного размера, который "надо выкидывать". Ню-ню...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975427
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1)
я сделала проверку на аварийный выход
$?
в обоих случаях программа нормально завершается

2)
дальше пока еще не разобралась
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975430
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
ну хорошо, 2
просто я запуталась
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975431
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblab$?

Это, вообще-то, проверка не на "аварийный выход", а на код возврата...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975433
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblab
mayton,
ну хорошо, 2
просто я запуталась

Посмотри мой сорц. Там есть строгое правило выхода.
И есть более улучшенная фильтрация на слова и не-слова.
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975438
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
но если код возврата 0, то аварийного выхода не было? так или нет?
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975447
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblabтак или нет?

В принципе да. Хотя есть варианты.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975453
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

Basil A. Sidorovфундаментальным преимуществом UTF-8 становится обратная совместимость с US-ASCII.

Ага, то есть тем самым char фиксированного размера, который "надо выкидывать". Ню-ню...

char можно сделать 32х битным. Но это не означает что размер string типа будет умножаться на количество символов.

Грубо говоря string - это стрим из "плавающих" символов. Хотя на итераторе вы можете получать 32х битный символ
если вам так хочется рассмотреть его отдельно от строки.
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975471
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975479
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу 16 бит и Microsoft. Мне кажется что спор между правильным и неправильным способом представления строк
может перейти в плоскость того важнее ли корпоративный стандарт или общий .

Кажется что еще на заре Windows-NT 4.0 они уже определили API который работает с 16 разрядным
символом. Использует ли MS понятие суррогатных пар - ХЗ. Я не знаю.

Кто в теме - просветите plz. Я имею в виду кодеров именно под платформу Windows.
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975488
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Они определили API, которое работало с UCS-2. А потом просто чтобы не париться объявили
его UTF-16, пользуясь их совместимостью. На суррогаты, как и все остальные, забили,
ограничившись созданием функций нормализации.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975494
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Использует ли MS понятие суррогатных пар - ХЗ. Я не знаю.

UCS-2 был в NT с самого начала (3.1)

UTF-16 использует начиная c windows 2000 .


многие не заморачиваются и не различают UCS-2 и UTF-16
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975554
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Ага, то есть тем самым char фиксированного размера, который "надо выкидывать". Ню-ню...
"char фиксированного размера" это US-ASCII.
Поскольку в юникоде не используются коды в диапазоне 128-255, то в юникоде нет других кодировок с символом фиксированной ширины. А вот составные символы есть даже в кирилице.
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975557
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Кажется что еще на заре Windows-NT 4.0
Во-первых - 3.x
Во-вторых, я не зря использовал формулировку "даже до мелкомягких дошло ...": в более-менее свежей десятке уже предлагается включение поддержки UTF8 в системе. В 1809 - как бета. Но тренд - характерный.
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975560
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а я еще одну программу написала

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#include <wctype.h>
#include <errno.h>
#include <locale.h>

int main(int argc, char **argv) {

       // вот эта строка будет выведена на экран
	wprintf(L"\n*** 1 - END OF FILE ***\n");

	// а вот эта строка не будет выведена на экран
	printf("\n*** 2 - END OF FILE ***\n");

	return 0;
}



вопрос: почему это так странно работает?
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975572
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblab, у тебя Windows?
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975575
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblab
вопрос: почему это так странно работает?
printf предполагает на входе ASCIIZ-строку вне зависимости от того, какие настройки проекта для строковых констант. первый байт в литерале "\n*** 2 - END OF FILE ***\n" оказывается равным 0, и printf уверенно завершает свою работу, он ведь дочитал до конца строки)
так вижу
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975579
vAH_O6Vg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mini.weblab
вопрос: почему это так странно работает?

Потому что по стандарту это неопределенное поведение.
Each stream has an orientation. After a stream is associated with an external file, but
before any operations are performed on it, the stream is without orientation. Once a wide
character input/output function has been applied to a stream without orientation, the
stream becomes a wide-oriented stream. Similarly, once a byte input/output function has
been applied to a stream without orientation, the stream becomes a byte-oriented stream.
Only a call to the freopen function or the fwide function can otherwise alter the
orientation of a stream. (A successful call to freopen removes any orientation.)
...
The three predefined streams stdin, stdout, and stderr are unoriented at program startup.
...
Byte input/output functions shall not be applied to a wide-oriented stream and wide
character input/output functions shall not be applied to a byte-oriented stream.
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975580
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0

egorych,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#include <wctype.h>
#include <errno.h>
#include <locale.h>

int main(int argc, char **argv) {

    // строка будет выведена на экран
	printf("\n*** 1- BEGINNING OF FILE ***\n");

	// строка НЕ БУДЕТ ВЫВЕДЕНА на экран
	wprintf(L"\n*** 1 - END OF FILE ***\n");

	// строка будет выведена на экран
	printf("\n*** 2 - END OF FILE ***\n");

	return 0;
}
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975586
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vAH_O6Vg,
я примерно что такое и думала
как называется часть стандарта, где это написано?
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975592
vAH_O6Vg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mini.weblab, Ссылка на последний черновик стандарта(корявит пост, если попытаться спрятать её под url=) https://web.archive.org/web/20181230041359if_/http://www.open-std.org/jtc1/sc22/wg14/www/abq/c17_updated_proposed_fdis.pdf

Поиском по тексту находится, но вообще раздел "7.21.2 Streams"
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975602
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vAH_O6Vg,
спасибо!
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975628
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblab

хороший tutorial. и еще там есть код небольшой библиотеки по работе с utf8, и это я, скорее всего, и буду использовать
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975634
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblab
mini.weblab

хороший tutorial. и еще там есть код небольшой библиотеки по работе с utf8, и это я, скорее всего, и буду использовать

Так и не понял.

Ты решила на чистых сях писать? Потому что исходник топика был как раз в этом стиле.
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975645
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Удивительная вещь этот utf-8. Очевидно глупая вещь, которая завоёвывает сознание. Ну или завоевала. Кривая херня созданная что бы сэкономить пол процента оперативки, но поломавшая все привычные (и естественные) алгоритмы работы со строками.

Осталось придумать std::vector<utf8_int> что бы с таким контейнером тоже ничего не работало.
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975646
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давайте разработаем utf8_int что бы инты меньше 128 помещались в один байт. Ну и дальше всё по аналогии от одного до четырёх байт. Патент?
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975649
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav, да смирись уже.

Современная строка - это не массив символов. Это - более сложный контейнер. Но имеющий итератор.
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975667
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
petrav, да смирись уже.

Современная строка - это не массив символов. Это - более сложный контейнер. Но имеющий итератор.

Что бы смириться нужно воевать, а я далёк по работе от этих utf-8. Меня просто удивляет очевидный бардак в головах у людей. Вот utf-8 им нравится, а wchar_t не нравится. Но почему тогда нравится QString? Или другие языки с хранением строк в utf-16? Почему ради минимальной экономии памяти нужно было сделать так, что в С++ нет итератора по строке? Да и вообще куча алгоритмов отвалилась и всё стало не интуитивно.

Что вообще это за такой аргумент: обратная совместимость с ASCII строками? Что поиск работает? Нет. Или только аля printf()? Это что printf() такое писец достояние, что нужно всё через *опу сделать?

Просто у людей нет системного и математического мышления.

Я понимаю, что у многих тут код в стиле:

Код: plaintext
1.
HttpResponse << "<div>" << "My utf8 string from DB. И мне пох." << "</div>";


Но ведь этим мир IT не ограничивается.
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975700
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
mini.weblab
пропущено...

хороший tutorial. и еще там есть код небольшой библиотеки по работе с utf8, и это я, скорее всего, и буду использовать

Так и не понял.

Ты решила на чистых сях писать? Потому что исходник топика был как раз в этом стиле.


это небольшой личный пет проект, поэтому почему бы и нет?
функцию, которая считывает слова из текста и выдает N наиболее часто встречающихся слов буду точно на С писать
графики буду делать на Питоне, и может быть на JS
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975706
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
я выбрала UTF-8 из практических соображений, в идеале программа должна работать так
1) пользователь вводит адрес веб-сайта, статьи, текстового файла, etc
2) и в ответ получает список ключевых слов + визуализацию
3) я думаю будет полезно поработать с кодировками и конвертацией текста

:-)
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975743
a guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропил
a guest
пропущено...
И бесплатны. Даже отрицательные по стоимости — чем больше преобразований, тем быстрее программа работает.

предлагаешь utf-32 всегда и везде?
CP866 utf-8 всегда и везде. Тем более, что он и так уже везде, кроме внутреннего представления некоторых маргинальных ОС.
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975744
a guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
petrav
Удивительная вещь этот utf-8. Очевидно глупая вещь, которая завоёвывает сознание. Ну или завоевала. Кривая херня созданная что бы сэкономить пол процента оперативки, но поломавшая все привычные (и естественные) алгоритмы работы со строками.
Ты utf-8 с utf-16/32 спутал.
...
Рейтинг: 0 / 0
почему printf не печатает строку в консоли ?
    #39975774
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,

Какой конкретно алгоритм для тебя стал неинтуитивным?
...
Рейтинг: 0 / 0
87 сообщений из 87, показаны все 4 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / почему printf не печатает строку в консоли ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]