Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.64
kRicha
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 119
#1

float vs string - C++

20.02.2011, 15:57. Просмотров 1865. Ответов 29
Метки нет (Все метки)

в общем есть такая конструкция
C++
1
2
3
4
5
6
FILE* pfi;
    char* fn = "D:/test.txt";
    pfi= fopen(fn,"w+");
    fputs("\tx=",pfi);
    fputs(x,pfi);
    fclose(pfi);
x float и функция не хочет писать симво в файл. Подскажите как его сделать стрингом?
Ну или как можно соединисть строку "\t x=" со значением 2.452354, что б вышла в итоге строка "\t x=2.452354" и потом уже ее записать в файл.


Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.02.2011, 15:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос float vs string (C++):

Из float в string - C++
Как из переменной типа флоат записать число в string? float x = -123.56; string Str; Нужно чтобы Str стало равно "-123.56"

c++ string to float - C++
string to float или double обычная консоль как перевести

Преобразовать string в float - C++
Привет! Подскажите, пожалуйста, наиболее простой способ, как преобразовать значение типа string в float.

Преобразовать из float в string - C++
Скажите, пжл, какие существуют ф-ии для конвертации из float в string?

Преобразование string в float - C++
подскажите как оптимальнее преобразовать число в формате CString -1E+008, которое я получаю из Excel-я. Может существуют стандартные...

Конвертирования float в string - C++
Доброго времени суток...кто может обяснить что означает каждая строка... string *ch = new string, ch1; char szbuff; for (int i =...

29
silent_1991
Эксперт С++
4997 / 3055 / 149
Регистрация: 11.11.2009
Сообщений: 7,040
Завершенные тесты: 1
20.02.2011, 16:04 #2
Для начала
C
1
char* fn = "D:\\test.txt";
1
kRicha
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 119
20.02.2011, 16:06  [ТС] #3
а что с ним?

Добавлено через 54 секунды
ааа, понял, ок, но оно и так работало... но я изменю.
0
silent_1991
Эксперт С++
4997 / 3055 / 149
Регистрация: 11.11.2009
Сообщений: 7,040
Завершенные тесты: 1
20.02.2011, 16:07 #4
И неплохо бы fprintf юзать для этого.

C
1
fprintf(pfi, "\tx = %lf", x);
1
kRicha
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 119
20.02.2011, 16:10  [ТС] #5
C++
1
fprintf(fn, "\tx = %lf", x);
error C2664: fprintf: невозможно преобразовать параметр 1 из "char []" в "FILE *"

и, разве эта функция не выводит строку на экран?
0
silent_1991
Эксперт С++
4997 / 3055 / 149
Регистрация: 11.11.2009
Сообщений: 7,040
Завершенные тесты: 1
20.02.2011, 16:12 #6
kRicha, я поправил, первым параметром конечно поток идёт.
На экран (точнее, в стандартный поток вывода, связанный с консолью) выводит printf, а fprintf - в тот поток, который мы укажем в качестве первого параметра.
1
kRicha
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 119
20.02.2011, 16:18  [ТС] #7
C++
1
fprintf(pfi, "\ty = %lf", y,"\n");
а так уже юзать нельзя?
0
silent_1991
Эксперт С++
4997 / 3055 / 149
Регистрация: 11.11.2009
Сообщений: 7,040
Завершенные тесты: 1
20.02.2011, 16:22 #8
kRicha, нет. Но того эффекта, которого вы хотите добиться, можно достичь так:
C
1
fprintf(pfi, "\ty = %lf\n", y);
Добавлено через 1 минуту
Вообще правило: первым параметром пишем строку в том виде, в каком хотим видеть её на экране, заменяя в ней все переменные на спецификаторы соответствующего типа, а вторым параметром сами переменные в правильном порядке.
1
kRicha
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 119
20.02.2011, 16:23  [ТС] #9
да, это действительно оно. Спасибо. А не могли б вы обьяснить конструкцию?

и еще, как оставлять 3 знака после запятой?
0
silent_1991
Эксперт С++
4997 / 3055 / 149
Регистрация: 11.11.2009
Сообщений: 7,040
Завершенные тесты: 1
20.02.2011, 16:24 #10
Конструкция подчиняется описанному правилу, там вроде всё понятно. Чтобы оставить три знака после запятой, %lf надо заменить на %.3f
1
kRicha
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 119
20.02.2011, 16:31  [ТС] #11
благодарствую

C++
1
cout << "\n "<< x1 << " < x =< 3: \n";
это у меня выводит на экран. В файл над такое же записать, это правильно?
C++
1
2
    fprintf(pfi,"%d",x1);
    fprintf(pfi, "< x <3\n");
0
silent_1991
Эксперт С++
4997 / 3055 / 149
Регистрация: 11.11.2009
Сообщений: 7,040
Завершенные тесты: 1
20.02.2011, 16:37 #12
Это сишный вариант. В плюсах стоит делать так:
C++
1
2
3
4
#include <fstream>
//...
std::ofstream output("output.txt");
output << "something";
На месте "output.txt" должен быть путь к файлу, куда будем выводить. На месте "something" - то, что будем выводить. Короче говоря, с output теперь можно работать так же, как со стандартным std::cout.
1
Nameless One
Эксперт С++
5780 / 3429 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
20.02.2011, 16:38 #13
kRicha, можно так:
C
1
fprintf(fpi, "\n%d < x < 3\n", x1);
А вообще, прочитай про форматный вывод
1
kRicha
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 119
20.02.2011, 16:41  [ТС] #14
Цитата Сообщение от silent_1991 Посмотреть сообщение
Это сишный вариант. В плюсах стоит делать так:
C++
1
2
3
4
#include <fstream>
//...
std::ofstream output("output.txt");
output << "something";
На месте "output.txt" должен быть путь к файлу, куда будем выводить. На месте "something" - то, что будем выводить. Короче говоря, с output теперь можно работать так же, как со стандартным std::cout.
пасиб, но летит куча ошибок...
Цитата Сообщение от Nameless One Посмотреть сообщение
kRicha, можно так:
C
1
fprintf(fpi, "\n%d < x < 3\n", x1);
А вообще, прочитай про форматный вывод
да, Ваш вариант работает так же как и мой, то есть вместо введенного числа он отображает "0" (на месте х1)
0
silent_1991
Эксперт С++
4997 / 3055 / 149
Регистрация: 11.11.2009
Сообщений: 7,040
Завершенные тесты: 1
20.02.2011, 16:45 #15
Цитата Сообщение от kRicha Посмотреть сообщение
но летит куча ошибок...
Надо же, ни один, кто говорит про ошибки, не понимаете, что тут не экстрасенсы сидят... Какие ошибки? Подключили fstream?

Добавлено через 1 минуту
И покажите код, который выдаёт ошибки.
1
20.02.2011, 16:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.02.2011, 16:45
Привет! Вот еще темы с ответами:

Преобразование String в float - C++
Добрый день уважаемые форумчане. Подскажите пожалуйста как преобразовать String в float. Заранее благодарен.

Перевод из string в float - C++
считывается выражение (числа и 5 возможных действий +, -, /, *, %) надо его посчитать планирую делать через польскую обратную запись ...

Конвертирование float/int to string - C++
Здравствуйте, я пишу программу на dev-c++ и мне надо конвертировать число в string.Я просто не знаю как это сделать в dev-c++. Помогите...

Как перевести из Float в String? - C++
Вот такой код: MemoryManager* MM = new MemoryManager(&quot;gta_sa.exe&quot;); DWORD offsets = { 0x14, 0x30 }; float ammo = 10; ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.