Форум программистов, компьютерный форум, киберфорум
Кроссплатфор­менная разработка
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
29 / 15 / 10
Регистрация: 07.06.2018
Сообщений: 109

Проблемы конвертации строки win-1251 в вещественное число (double или float) под linux

25.10.2024, 13:33. Показов 7098. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть текстовый файл в кодировке win-1251 содержащий набор целых и вещественных цифр. Причем вешественные цифры записанны в нем в %E формате.
Целые цифры конвертирую из строки с помошью С++ функции atoi, а вещественные пытаюсь конвертировать с помошью atof
Под Windows все работает нормально, а вот linux функция atoi работает как надо, а функция atof возвращает нули.

Пытался конвертировать сторку в wxString и использовать метод wxSring::ToDouble программа под Linux падает

C++
1
2
3
4
5
6
7
8
9
10
nLen = strcspn(pchar, szNonumber);
if (nLen > 0)
{
    FPOINT_ITEM pi;
    *(pchar + nLen) = _T('\0');
    wxString szBuf = wxString::FromAscii(pchar);
    szBuf.ToDouble(&pi.fX);
    m_CenterOffCell.push_back(pi);
    pchar += nLen + 1;
}
Проект использует кросплатформенную библиотеку wxWidGets 2.8.12
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.10.2024, 13:33
Ответы с готовыми решениями:

Как записать вещественное число (float, double) в массив по порядку?
например у меня есть число 12.34567890 и char massiv; мне нужно чтобы в массив записалось мое число вот так. massiv = "1"; ...

Перевод строки в double или float
string cz = "1.1632"; Подскажите как правильно перевести?

Как проверить вводилось ли число (типа double или float) в консоль
Как проверить вводилось ли число (типа double или float) в консоль?

3
2734 / 888 / 331
Регистрация: 10.02.2018
Сообщений: 2,097
25.10.2024, 13:43
Лучший ответ Сообщение было отмечено Melamed как решение

Решение

Melamed, возможно, но это не точно, программе нужно явно указать локаль (setlocale).
1
267 / 199 / 30
Регистрация: 26.11.2022
Сообщений: 862
25.10.2024, 20:46
а пример данных можно ? (кусок файла как он есть )
0
29 / 15 / 10
Регистрация: 07.06.2018
Сообщений: 109
27.10.2024, 12:37  [ТС]
Вот кусок файла
Кликните здесь для просмотра всего текста

349 59 37 499 42 127 169 73921
41 47 52 56
19 27 34 40 46 51 55 58 59
59 10 18 26 33 39 45 50 54 57 10 19
58 57 9 17 25 32 38 44 49 53 9 18 27
56 55 54 53 8 16 24 31 37 43 48 8 17 26 34 41
52 51 50 49 48 7 15 23 30 36 42 7 16 25 33 40 47
47 46 45 44 43 42 6 14 22 29 35 6 15 24 32 39 46 52
41 40 39 38 37 36 35 5 13 21 28 5 14 23 31 38 45 51 56
34 33 32 31 30 29 28 4 12 20 4 13 22 30 37 44 50 55
27 26 25 24 23 22 21 20 3 11 3 12 21 29 36 43 49 54 58
19 18 17 16 15 14 13 12 11 2 2 11 20 28 35 42 48 53 57 59
10 9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 9 10
59 57 53 48 42 35 28 20 11 2 2 11 12 13 14 15 16 17 18 19
58 54 49 43 36 29 21 12 3 11 3 20 21 22 23 24 25 26 27
55 50 44 37 30 22 13 4 20 12 4 28 29 30 31 32 33 34
56 51 45 38 31 23 14 5 28 21 13 5 35 36 37 38 39 40 41
52 46 39 32 24 15 6 35 29 22 14 6 42 43 44 45 46 47
47 40 33 25 16 7 42 36 30 23 15 7 48 49 50 51 52
41 34 26 17 8 48 43 37 31 24 16 8 53 54 55 56
27 18 9 53 49 44 38 32 25 17 9 57 58
19 10 57 54 50 45 39 33 26 18 10 59
59 58 55 51 46 40 34 27 19
56 52 47 41
5 5 5 5
5 5 5 5 5 5 5 5 5
4 5 5 5 5 5 5 5 5 5 6 6
4 4 5 5 5 5 5 5 5 5 6 6 6
4 4 4 4 5 5 5 5 5 5 5 6 6 6 6 6
4 4 4 4 4 5 5 5 5 5 5 6 6 6 6 6 6
4 4 4 4 4 4 5 5 5 5 5 6 6 6 6 6 6 6
4 4 4 4 4 4 4 5 5 5 5 6 6 6 6 6 6 6 6
4 4 4 4 4 4 4 5 5 5 6 6 6 6 6 6 6 6
4 4 4 4 4 4 4 4 5 5 6 6 6 6 6 6 6 6 6
4 4 4 4 4 4 4 4 4 5 6 6 6 6 6 6 6 6 6 6
4 4 4 4 4 4 4 4 4 1 1 1 1 1 1 1 1 1 1
3 3 3 3 3 3 3 3 3 3 2 1 1 1 1 1 1 1 1 1
3 3 3 3 3 3 3 3 3 2 2 1 1 1 1 1 1 1 1
3 3 3 3 3 3 3 3 2 2 2 1 1 1 1 1 1 1
3 3 3 3 3 3 3 3 2 2 2 2 1 1 1 1 1 1 1
3 3 3 3 3 3 3 2 2 2 2 2 1 1 1 1 1 1
3 3 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1
3 3 3 3 3 2 2 2 2 2 2 2 1 1 1 1
3 3 3 2 2 2 2 2 2 2 2 1 1
3 3 2 2 2 2 2 2 2 2 2 1
2 2 2 2 2 2 2 2 2
2 2 2 2
23 24 25 26 35 36 37 38 39 40 41 42 43 50 51
52 53 54 55 56 57 58 59 60 61 68 69 70 71 72
73 74 75 76 77 78 79 80 86 87 88 89 90 91 92
93 94 95 96 97 98 99 100 101 106 107 108 109 110 111
112 113 114 115 116 117 118 119 120 121 122 127 128 129 130
131 132 133 134 135 136 137 138 139 140 141 142 143 144 149
150 151 152 153 154 155 156 157 158 159 160 161 162 163 164
165 166 167 172 173 174 175 176 177 178 179 180 181 182 183
184 185 186 187 188 189 194 195 196 197 198 199 200 201 202
203 204 205 206 207 208 209 210 211 212 217 218 219 220 221
222 223 224 225 226 227 228 229 230 231 232 233 234 235 236
241 242 243 244 245 246 247 248 249 250 251 252 253 254 255
256 257 258 259 264 265 266 267 268 269 270 271 272 273 274
275 276 277 278 279 280 281 282 283 288 289 290 291 292 293
294 295 296 297 298 299 300 301 302 303 304 305 306 311 312
313 314 315 316 317 318 319 320 321 322 323 324 325 326 327
328 333 334 335 336 337 338 339 340 341 342 343 344 345 346
347 348 349 350 351 356 357 358 359 360 361 362 363 364 365
366 367 368 369 370 371 372 373 378 379 380 381 382 383 384
385 386 387 388 389 390 391 392 393 394 399 400 401 402 403
404 405 406 407 408 409 410 411 412 413 414 420 421 422 423
424 425 426 427 428 429 430 431 432 439 440 441 442 443 444
445 446 447 448 449 450 457 458 459 460 461 462 463 464 465
474 475 476 477
-.15000E+03 -.50000E+02 .50000E+02 .15000E+03
-.40000E+03 -.30000E+03 -.20000E+03 -.10000E+03
.00000E+00 .10000E+03 .20000E+03 .30000E+03
.40000E+03 -.55000E+03 -.45000E+03 -.35000E+03
-.25000E+03 -.15000E+03 -.50000E+02 .50000E+02
.15000E+03 .25000E+03 .35000E+03 .45000E+03
.55000E+03 -.60000E+03 -.50000E+03 -.40000E+03
-.30000E+03 -.20000E+03 -.10000E+03 .00000E+00
.10000E+03 .20000E+03 .30000E+03 .40000E+03
.50000E+03 .60000E+03 -.75000E+03 -.65000E+03
-.55000E+03 -.45000E+03 -.35000E+03 -.25000E+03
-.15000E+03 -.50000E+02 .50000E+02 .15000E+03
.25000E+03 .35000E+03 .45000E+03 .55000E+03
.65000E+03 .75000E+03 -.80000E+03 -.70000E+03
-.60000E+03 -.50000E+03 -.40000E+03 -.30000E+03
-.20000E+03 -.10000E+03 .00000E+00 .10000E+03
.20000E+03 .30000E+03 .40000E+03 .50000E+03
.60000E+03 .70000E+03 .80000E+03 -.85000E+03
-.75000E+03 -.65000E+03 -.55000E+03 -.45000E+03
-.35000E+03 -.25000E+03 -.15000E+03 -.50000E+02
.50000E+02 .15000E+03 .25000E+03 .35000E+03
.45000E+03 .55000E+03 .65000E+03 .75000E+03
.85000E+03 -.90000E+03 -.80000E+03 -.70000E+03
-.60000E+03 -.50000E+03 -.40000E+03 -.30000E+03
-.20000E+03 -.10000E+03 .00000E+00 .10000E+03
.20000E+03 .30000E+03 .40000E+03 .50000E+03
.60000E+03 .70000E+03 .80000E+03 .90000E+03
-.85000E+03 -.75000E+03 -.65000E+03 -.55000E+03
-.45000E+03 -.35000E+03 -.25000E+03 -.15000E+03
-.50000E+02 .50000E+02 .15000E+03 .25000E+03


Все решилось с помошью
C++
1
setlocale(LC_NUMERIC, "C");
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.10.2024, 12:37
Помогаю со студенческими работами здесь

Написать функцию, которая получает значение типа float и возвращает две строки: одна представляет вещественное число в обычном виде ,а другая
Написать функцию, которая получает значение типа float и возвращает две строки: одна представляет вещественное число в обычном виде ,а...

Преобразовать 2 числа int в 1 число float(double) | double int1.int2
Всем привет. Изучая азы C++, столкнулся с такой проблемой. Есть два значения типа int, их необходимо преобразовать в одно значение типа...

Проблемы с модемом или COM портом под win 2000 Server
Здрасте! Описание проблемы: Есть win 2000 Server .... есть внутренний модем Acorp M56K PIM ... винды етот модем не находят ......

Ошибка конвертации строки в float
Здравствуйте. пытаюсь считать данные типа float со строки. но у меня выдает ошибку при конвертации string в toSingle "Необработанное...

Лучший способ для конвертации строки во float
Добрый день! parseFloat("313123123123122.31") // 313123123123122.3 Как можно сохранить точность до сотых ?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru