Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2018, 16:37   #11
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

И? https://en.cppreference.com/w/cpp/utility/from_chars
Цитата:
On success, returns a value of type from_chars_result such that ptr points at the first character not matching the pattern, or has the value equal to last if all characters match and ec is value-initialized.
p51x вне форума Ответить с цитированием
Старый 29.10.2018, 16:47   #12
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

Понимаете, есть одна программа, которая синтезирует строки и записывает их в файл. Записывает их в массив и потом построчно вгоняет в текстовый файл.
А эта программа должна считывать и искать как уже говорил и записывать в новый файл.
Вот только эта строка пустая первая в новом файле появляется как выяснено в ходе многочисленных экспериментов только в том случае, когда происходит обнуление вектора v.clear(); и записывание в вектор новой строки с количеством числовых слов больше чем в предыдущей строке.
Если первая строка записываемая в вектор так и остаётся без удаления её из вектора, то при записи в новый файл такого негативного спецэффекта не наблюдается.
KAMLS вне форума Ответить с цитированием
Старый 29.10.2018, 16:53   #13
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

А теперь выбросите из головы вектор клир и посмотрите, что еще делается... И вдруг окажется, что вектор клир происходит перед тем, когда вы хотите в нее записать новую строку, т.е. когда вы прошли переводы/концы строк и прочие вещи.
Естественно, если первая строка подходящая, то перевод/концы строк вы не обрабатывали и в вектор не записывали.
Вот и получается, что вектор клир тут абсолютно ни при чем.
p51x вне форума Ответить с цитированием
Старый 29.10.2018, 17:08   #14
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

Это я понял, да. Но фокус в том, что символы ch записываются str1+=ch везде под условием. Либо это точка, либо после проверки цифра. В одном месте где записывается всё остальное стоит условие
Код:
if(ch!='\n' || ch!='\r')
            str1+=ch;
Но толку нет всё равно.
не должны эти символы попадать в строку! Не должны!
KAMLS вне форума Ответить с цитированием
Старый 29.10.2018, 17:10   #15
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

У меня же сначала строка посимвольно собирается, а только потом в вектор записывается. Да, при новой строке с большим количеством чисел сначала клир, потом запись собранной строки в поле структуры которая есть ячейка вектора. Но при сборке строки везде условия чтобы перевод строки нигде не просочился!
KAMLS вне форума Ответить с цитированием
Старый 29.10.2018, 17:15   #16
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

Но они как-то проходят всё таки... Я их выявил условием наличия и печати в консоли если есть. Есть они.. Но как?!!
KAMLS вне форума Ответить с цитированием
Старый 29.10.2018, 17:20   #17
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Я не знаю, где вы там проверяете, но вот смотрю ваш код:
1.
Код:
else//если не цифра после точки, то это символ следующей строки
						b = 1;//конец строки настал
2. Приходите к
Код:
if (ch == '.')
{
  str1 += ch;
  b = 1;
}
else
 str1 += ch
Где в любом случае символ попадет в строку.
p51x вне форума Ответить с цитированием
Старый 29.10.2018, 17:24   #18
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

Там я уже поставил
Код:
else
				if(ch!='\n' || ch!='\r')
			str1 += ch;//тут запись символа буквы или запятой или пробела в предложение

			if (b == 1)//Здесь проверка флага на окончание предложения
А в начале цикла поставил для выявления
Код:
if (ch == '\n' || ch == '\r')
			{
				ch == NULL;
				if (ch == '\n' || ch == '\r')
				{
					cout << "+" << endl;
				}
				cout << ch << endl;
			}
				
			if(ch==NULL)
			fouts.get(ch);//считывание нового символа
Но самое поразительное, это то, что если я не удаляю блокнот итоговой записи и запускаю программу вновь и вновь при тех же условиях программа не делает ввод пустой строки!!!
Скриншот тому подтверждение!
Изображения
Тип файла: jpg кадр_12.jpg (93.6 Кб, 58 просмотров)
KAMLS вне форума Ответить с цитированием
Старый 29.10.2018, 17:26   #19
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

Как так?!! там же должны быть по алгоритму те же переводы строки!!
KAMLS вне форума Ответить с цитированием
Старый 29.10.2018, 17:29   #20
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

И еще, при всех этих условиях, 11 плюсов таки выводятся на консоль..
Изображения
Тип файла: jpg кадр_13.jpg (14.1 Кб, 134 просмотров)
KAMLS вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Очистка буфера ввода консоли Anton_Jag Общие вопросы C/C++ 7 03.06.2018 20:08
очистка буфера обмена beegl Общие вопросы Delphi 21 04.01.2017 11:01
переполнение буфера freekyn Помощь студентам 3 25.04.2013 17:21
Очистка буфера клавиатуры Van-89 Паскаль, Turbo Pascal, PascalABC.NET 6 11.09.2012 19:40
Очистка буфера клавиатуры Hell Knight Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 01.03.2011 18:15