Size: a a a

2020 July 28

AS

Anatoly Shirokov in supapro.cxx
Ian Mcewan
Здравствуйте. Подскажите, пожалуйста, как в stringstream сымитировать поведение printf формата "%02d"? Чтобы, допустим, при передаче в поток числа от 1 до 9 туда записывалось 01, 02, 03
источник

IM

Ian Mcewan in supapro.cxx
Спасибо
источник

П

Петр in supapro.cxx
Вообщем, я переписал немного код с функцией strtod, которая переводит из string в double. Все работает, но значения выводятся через 0, т.е.

7.4 0 5.5 0 8.9 0

и т. д.
Помогите просто в алгоритме разобраться, почему так?

#include <iostream>
#include <fstream>
#include <deque>
#include <string>
#include <cstdlib>
using namespace std;
int main() {


 ifstream fin;
 fin.open("3D_f_try1.csv");


 
 deque<double> d_Number;
 double li1, li2;
 char * pEnd;


 getline(fin, ap);
 do {
   
   li1 = strtod(ap.c_str(), &pEnd);
   li2 = strtod(pEnd, NULL);
 
   d_Number.push_back(li1);
   d_Number.push_back(li2);
   getline(fin, ap);
 } while (!fin.eof());
 int n = d_Number.size();
 for (int i = 0; i < d_Number.size(); ++i)
 {
   cout << d_Number.at(i) << " ";
 }
 cout << n;
 system("pause>>null");
 
}
источник

IK

Ivan Koliesnik in supapro.cxx
Петр
Добрый день
Нужно считать csv-файл с тремя столбцами чисел типа double
Использую функцию stod для перевода из string в double
Код не работает, выдает необработанное исключение
Помогите, пожалуйста



#include <iostream>
#include <fstream>
#include <deque>
#include <string>
#include <cstdlib>
using namespace std;
int main() {


ifstream fin;
fin.open("3D_f_try1.csv");
string ap;
string::size_type sz;

 
deque<double> d_Number;
double li1, li2;
char * pEnd;


getline(fin, ap, ';');
do {
 
 li1 = stod(ap.c_str(), &sz);
 li2 = stod(ap.substr(sz));
 d_Number.push_back(li1);
 d_Number.push_back(li2);

 getline(fin, ap, ';');
} while (!fin.eof());
int n = d_Number.size();
for (int i = 0; i < d_Number.size(); ++i)
{
 cout « d_Number.at(i) « " ";
}
cout « n;
system("pause»null");
 
}
источник

DB

Dimmu Borgir in supapro.cxx
Петр
Вообщем, я переписал немного код с функцией strtod, которая переводит из string в double. Все работает, но значения выводятся через 0, т.е.

7.4 0 5.5 0 8.9 0

и т. д.
Помогите просто в алгоритме разобраться, почему так?

#include <iostream>
#include <fstream>
#include <deque>
#include <string>
#include <cstdlib>
using namespace std;
int main() {


 ifstream fin;
 fin.open("3D_f_try1.csv");


 
 deque<double> d_Number;
 double li1, li2;
 char * pEnd;


 getline(fin, ap);
 do {
   
   li1 = strtod(ap.c_str(), &pEnd);
   li2 = strtod(pEnd, NULL);
 
   d_Number.push_back(li1);
   d_Number.push_back(li2);
   getline(fin, ap);
 } while (!fin.eof());
 int n = d_Number.size();
 for (int i = 0; i < d_Number.size(); ++i)
 {
   cout << d_Number.at(i) << " ";
 }
 cout << n;
 system("pause>>null");
 
}
что за функция strtod?
источник

IK

Ivan Koliesnik in supapro.cxx
Dimmu Borgir
что за функция strtod?
string to double
источник

П

Петр in supapro.cxx
Функция strtod преобразовывает строку string в double. Анализируя строку string, strtod интерпретирует её содержимое в число типа double. Если endptr не является нулевым указателем, то функция устанавливает значение endptr на первый символ после числа.
источник

DB

Dimmu Borgir in supapro.cxx
Ivan Koliesnik
string to double
помню когда реализовал функцию string_to_int. А вот  такую функцию впервые вижу
источник

IK

Ivan Koliesnik in supapro.cxx
Dimmu Borgir
помню когда реализовал функцию string_to_int. А вот  такую функцию впервые вижу
та да... я тоже на c чистом парсил ручками и int и float..
источник

П

Петр in supapro.cxx
Dimmu Borgir
помню когда реализовал функцию string_to_int. А вот  такую функцию впервые вижу
я сюда такой код кидал
источник

D

Dmitriy in supapro.cxx
Dimmu Borgir
помню когда реализовал функцию string_to_int. А вот  такую функцию впервые вижу
Сишное же.
источник

П

Петр in supapro.cxx
Петр
Вообщем, я переписал немного код с функцией strtod, которая переводит из string в double. Все работает, но значения выводятся через 0, т.е.

7.4 0 5.5 0 8.9 0

и т. д.
Помогите просто в алгоритме разобраться, почему так?

#include <iostream>
#include <fstream>
#include <deque>
#include <string>
#include <cstdlib>
using namespace std;
int main() {


 ifstream fin;
 fin.open("3D_f_try1.csv");


 
 deque<double> d_Number;
 double li1, li2;
 char * pEnd;


 getline(fin, ap);
 do {
   
   li1 = strtod(ap.c_str(), &pEnd);
   li2 = strtod(pEnd, NULL);
 
   d_Number.push_back(li1);
   d_Number.push_back(li2);
   getline(fin, ap);
 } while (!fin.eof());
 int n = d_Number.size();
 for (int i = 0; i < d_Number.size(); ++i)
 {
   cout << d_Number.at(i) << " ";
 }
 cout << n;
 system("pause>>null");
 
}
а что делать с этими нулями? Помогите
источник

DB

Dimmu Borgir in supapro.cxx
правда там у меня говнокод получилось но написал все такие) https://pastebin.com/y9hWLt5r
источник

D

Dmitriy in supapro.cxx
Зачем динамически выделять память?
источник

D

Dmitriy in supapro.cxx
Зачем находить длину строки?
источник

D

Dmitriy in supapro.cxx
reverse_str[i] > '0' && reverse_str[i] <'9' || reverse_str[i] == '0' || reverse_str[i] == '9'
А <=, >=?😭
источник

DB

Dimmu Borgir in supapro.cxx
Dmitriy
Зачем динамически выделять память?
да можно было статическую заюзат ну не знаю так написал) давно писал
источник

M

Mr.Mait in supapro.cxx
Эту запись можно сократить
if (reverse_str[i] > '0' && reverse_str[i] < '9' || reverse_str[i] == '0' || reverse_str[i] == '9')

if (reverse_str[i] >= '0' && reverse_str[i] <= '9')

if(std::isdigit(reverse_str[i]))
источник

M

Mr.Mait in supapro.cxx
delete никогда не сработает delete[] reverse_str;
источник

TS

Till Schneider in supapro.cxx
Danya
Не юзай
Это багованная херь
настолько багованная вещь, что с помощью mingw собирают приложения, связанные с безопасностью и с чувствительной информации пользователей (логины/пароли).
🤔
источник