1

Тема: переведення даних з символьної форми в числову

в мене є текстовий файл в який вводяться числові дані, наприклад 7902, проблема заключається в тому, що коли я забираю ці дані з файлу на опрацювання то я получаю номер відповідних символів 55 57 48 50. Як це виправити?

    ifstream fin("str.dat");    
    fin.getline(str, 1000);        
        
    for(int i=0;i<1000;i++){
        if(str[i]!=' '){
            n++;
            p=str[i];
            cout<<p<<"\t";

2

Re: переведення даних з символьної форми в числову

Підійти до вивчення програмування серйозніше або забити.

3

Re: переведення даних з символьної форми в числову

getline читає (сюрприз-сюрприз!) рядок. А вам треба читати числа - то так і робіть:

for(int i=0;i<1000;i++){
    fin>>p;
    ...
Подякували: Yegor2

4

Re: переведення даних з символьної форми в числову

getline читає (сюрприз-сюрприз!) рядок. А вам треба читати числа - то так і робіть:

for(int i=0;i<1000;i++){
  fin>>p;

- треба зазанчити що числа у такому випадку повинні бути записані у текстовому вигляді, бо у бінарному >> поверне вам повну несенітницю чи 0 у кращому випадку

#include <iostream>
#include <sstream>
using namespace std;

int main(){
    float p1 = 1.256f;
    float p2 = 1.256f;
    stringstream s1;
    stringstream s2;
    stringstream s3;
    s1<<p1;
    s2.write((char *)&p2, sizeof(float));
    s3.write((char *)&p2, sizeof(float));
    p1 = 0;
    p2 = 0;
    s1>>p1;
    s2>>p2;//НЕВІРНО!
    cout<<p1<<endl;
    cout<<p2<<endl;
    s3.read((char *)&p2, sizeof(float));
    cout<<p2<<endl;
    return 0;
}

http://codepad.org/pTqAWyKn

1.256
0
1.256

5

Re: переведення даних з символьної форми в числову

-=ЮрА=- написав:

- треба зазанчити що числа у такому випадку повинні бути записані у текстовому вигляді, бо у бінарному >> поверне вам повну несенітницю чи 0 у кращому випадку

Як гадаєте, коди байтів 55 57 48 50 - це 842021175 (бінарне ціле, little-endian) чи 7902 (ASCII)? Чи float (самі перекодуєте? Я ставлю на ASCII. Тим більше, що автор сам про 7902 написав.

Прихований текст

цікаве питання: чи існує число, що кодується в десятковому ASCII і бінарному представленні однаково? Мабуть ні, бо там буде не менш як 48 в старшому розряді. А от з float - треба думати...

6 Востаннє редагувалося -=ЮрА=- (30.01.2016 14:54:26)

Re: переведення даних з символьної форми в числову

koala я ще раз себе процитую

треба зазанчити що числа у такому випадку повинні бути записані у текстовому вигляді, бо у бінарному >> поверне вам повну несенітницю чи 0 у кращому випадку

якщо ви хочете дізнатися що за флоат може бути прихований за цима байтами 55 57 48 50 то зробіть наступне
http://codepad.org/d8oihj2S
Моє зауваження стосувалось режиму запису у файл о якому ви нічого не запитали та не зауважили, то давайте не спорити бо я поки що предмету спору не бачу.