Форум программистов, компьютерный форум CyberForum.ru

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

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

float vs string - C++

20.02.2011, 15:57. Просмотров 1800. Ответов 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" и потом уже ее записать в файл.


Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.02.2011, 15:57     float vs string
Посмотрите здесь:

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

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

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

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

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

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kRicha
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 119
20.02.2011, 16:58  [ТС]     float vs string #16
о, забыл подключить... я так понял тогда над юзать что-то одно? либо printf, либо output? потому что оно затирает...

Добавлено через 10 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include "stdafx.h"
#include <Windows.h>
#include <iostream>
#include <fstream>
using namespace std;
 
int main(int argc, char* argv[])
{
    FILE* pfi;
    char* fn = "D:\\test.txt";
    float x1,x2,x,h,y;
    cout << "Enter x1: "; cin>>x1;
    cout << "Enter x2: "; cin>>x2;
    cout << "Enter  h: "; cin>>h;
    pfi= fopen(fn,"w+");
    cout << "\n "<< x1 << " < x =< 3: \n"; 
    fprintf(pfi, "\n%d < x < 3\n", x1);
    std::ofstream output("D:\\test.txt");
    output<< "\n "<< x1 << " < x =< 3: \n";
    for (x = x1; x <= 3; x=x+h)
    {
        y = 1;
        for (int i=0; i<=3; i++)
        {
            y=y*(x*x+i);
        }
        fprintf(pfi, "\tx = %.2f ", x);
        fprintf(pfi, "\ty = %.2f\n", y);
        cout << "\tx= " << x << "\t y= " << y << "\n";
    }
    cout << "\n "<< x << " < x < 8: \n"; 
    for (x; x<8; x=x+h)
    {
        y = (x+2)*(x*x-3);
        fprintf(pfi, "\tx = %.2f ", x);
        fprintf(pfi, "\ty = %.2f\n", y);
        cout << "\tx= " << x << "\t y= " << y << "\n";
    }
    fclose(pfi);
    system ("pause");
}
вот программа.
silent_1991
Эксперт С++
4961 / 3037 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
20.02.2011, 16:59     float vs string #17
kRicha, да, лучше использовать только одно. На счёт output, вы можете его обозвать как угодно, например fout.
Кстати, вот тут даже предлагал кое-кому такой извращенский способ. Например, вы в одной и той же программе выводите кучу информации в разных местах. И не хотите постоянно переписывать или комментить кучу строк, чтобы переключиться с файла на консоль и обратно. Тогда можно поступить так:
1. Консольный ввод/вывод:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
//-----------------------------------------------------------------------------
//*
using std::cin;
using std::cout;
//*/
//-----------------------------------------------------------------------------
/*
#include <fstream>
char INPUT[] = "input.txt";
char OUTPUT[] = "output.txt";
std::ifstream cin(INPUT);
std::ofstream cout(OUTPUT);
//*/
//-----------------------------------------------------------------------------
 
int main()
{
    cout << "Hello, World!" << std::endl;
 
    return 0;
}
2. Файловый ввод/вывод:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
//-----------------------------------------------------------------------------
/*
using std::cin;
using std::cout;
//*/
//-----------------------------------------------------------------------------
//*
#include <fstream>
char INPUT[] = "input.txt";
char OUTPUT[] = "output.txt";
std::ifstream cin(INPUT);
std::ofstream cout(OUTPUT);
//*/
//-----------------------------------------------------------------------------
 
int main()
{
    cout << "Hello, World!" << std::endl;
 
    return 0;
}
Добавлено через 58 секунд
Таким образом, один / убираем, один добавляем - и вот ужа наша программа выводит информацию в файл. Проделываем всё в обратном порядке - видим данные на консоли.
kRicha
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 119
20.02.2011, 17:00  [ТС]     float vs string #18
не, давайте без извращенских способов
silent_1991
Эксперт С++
4961 / 3037 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
20.02.2011, 17:02     float vs string #19
kRicha, ну тогда только переписывать пол-программы, чтобы поменять режим ввода-вывода)))
kRicha
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 119
20.02.2011, 17:03  [ТС]     float vs string #20
работает же все, кроме этой строки
C++
1
fprintf(pfi, "\n%d < x < 3\n", x1);
почему оно вместо х1 0 ставит
silent_1991
Эксперт С++
4961 / 3037 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
20.02.2011, 17:06     float vs string #21
Потому что у вас x1 объявлен как float (кстати, лучше использовать double), а выводите вы её с целочисленным спецификатором %d. Надо использовать %f. А ещё лучше всё же забить на fprintf и использовать плюсовые потоки.
kRicha
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 119
20.02.2011, 17:14  [ТС]     float vs string #22
Вы, как всегда, правы. Спасибо за помощь
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int main()
{
    FILE* pfi;
    char* fn = "D:\\test.txt";
    float x1,x2,x,h,y;
    pfi= fopen(fn,"w+");
    cout << "Enter x1: "; cin>>x1;
    cout << "Enter x2: "; cin>>x2;
    cout << "Enter  h: "; cin>>h;
    cout << "\n "<< x1 << " < x =< 3: \n"; 
    fprintf(pfi, "%.0f < x =< 3\n", x1);
    for (x = x1; x <= 3; x=x+h)
    {
        y = 1;
        for (int i=0; i<=3; i++)
        {
            y=y*(x*x+i);
        }
        fprintf(pfi, "\tx = %.1f ", x);
        fprintf(pfi, "\ty = %.2f\n", y);
        cout << "\tx= " << x << "\t y= " << y << "\n";
    }
    cout << "\n "<< x << " < x < 8: \n"; 
    fprintf(pfi, "\n%.1f < x < 8\n", x);
    for (x; x<8; x=x+h)
    {
        y = (x+2)*(x*x-3);
        fprintf(pfi, "\tx = %.1f ", x);
        fprintf(pfi, "\ty = %.2f\n", y);
        cout << "\tx= " << x << "\t y= " << y << "\n";
    }
    fclose(pfi);
    system ("pause");
}
http://h1813090.stratoserver.net/fil...CDdtK9ivnw.png
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
20.02.2011, 17:15     float vs string #23
Цитата Сообщение от kRicha Посмотреть сообщение
разве эта функция не выводит строку на экран?
printf(...) это тоже самое что fprintf(stdout, ...)
kRicha
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 119
20.02.2011, 17:36  [ТС]     float vs string #24
такс, то была первая часть, скомпилировав которую, я получил файл work.exe

вторая часть такая:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "stdafx.h"
#include <Windows.h>
 
using namespace std;
 
int main(int argc, char* argv[])
{
STARTUPINFO cif;
    ZeroMemory(&cif,sizeof(STARTUPINFO));
    PROCESS_INFORMATION pi;
    CreateProcess("d:\\work.exe",NULL,
        NULL,NULL,FALSE,NULL,NULL,NULL,&cif,&pi);
}
я прально делаю, или неть?

Добавлено через 13 минут
если что, само задание вот
float vs string
Перевод:
Написать две программы на языке С в виде Win32 Console Application приложений.
- первая программа производит табулирование функции согласно с вариантом; значение диапазона и шаг задается вводом с клавиатуры, результат записывается в файл;
- вторая программа выполняет запуск процесса, который связан с исполняемым кодом первой программы, считывает содержимое файла, созданного процессом и отображает результат в табличном виде


 Комментарий модератора 
Правила форума
1.3 Официальным языком форума является русский язык.
2.11 Картинки загружайте на форум, во избежание их удаления или потери на сторонних ресурсах.
kRicha
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 119
21.02.2011, 00:12  [ТС]     float vs string #25
да, впредь, так и буду делать. Спасибо.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
21.02.2011, 01:21     float vs string #26
C++
1
2
3
4
5
6
7
/*
#include <fstream>
char INPUT[] = "input.txt";
char OUTPUT[] = "output.txt";
std::ifstream cin(INPUT);
std::ofstream cout(OUTPUT);
//*/
Конечно чистое ИМХО но веселее бы freopen или же rdbuf-ы
kRicha
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 119
21.02.2011, 01:25  [ТС]     float vs string #27
а таким языком, как для народа?
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
21.02.2011, 01:33     float vs string #28
kRicha,
C
1
2
freopen("input.txt", r, stdin);
freopen("output.txt", w, stdout);
C++
1
2
3
4
std::ifstream ifs("input.txt");
std::cin.rdbuf(ifs.rdbuf());
std::ofstream ofs("output.txt");
std::cout.rdbuf(ofs.rdbuf());
Добавлено через 3 минуты
Плюс пример для перенаправления cout-а в файл, а затем обратно.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <fstream>
 
int main()
{
    std::streambuf* out;
    std::ofstream ofs("output.txt");
    out=std::cout.rdbuf();
    std::cout.rdbuf(ofs.rdbuf());
    std::cout<<"Someone\n";
    std::cout.rdbuf(out);
    std::cout<<"Someone\n";
    return 0;
}
kRicha
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 119
21.02.2011, 01:34  [ТС]     float vs string #29
Цитата Сообщение от ForEveR Посмотреть сообщение
kRicha,
C
1
2
freopen("input.txt", r, stdin);
freopen("output.txt", w, stdout);
C++
1
2
3
4
std::ifstream ifs("input.txt");
std::cin.rdbuf(ifs.rdbuf());
std::ofstream ofs("output.txt");
std::cout.rdbuf(ofs.rdbuf());
спасиб, конечно за старания, но я такое впервые вижу, не особо понимаю полное назначение, но да ладно... пусть будет как есть, мне галвное знать по заданию я сделал или нет
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.02.2011, 01:37     float vs string
Еще ссылки по теме:

Перевод из 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; ...

Как перевести из float -> char[](string)??? - C++
Как преобразовать дробь типа float 0.625 в строку (массив символов). Не используя библиотечные функции, (кроме iostrean.h и iomanip.h)

Конвертация типов. float в string/char - C++
Помогите реализовать! Для примера возьмем: У меня есть двумерный массив типа float (Primer1) и есть массив типа string или char...


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

Или воспользуйтесь поиском по форуму:
silent_1991
21.02.2011, 01:37     float vs string
  #30

Не по теме:

ForEveR, поскольку плюсы познаю в достаточно вольной форме - пока не могу себя заставить более основательно перейти к таким вещам как STL, да и потоки знаю достаточно поверхностно (в частности, про rdbuf не слышал). От того и предложил такой извращенский способ, о чём честно и откровенно отписался)))

Yandex
Объявления
21.02.2011, 01:37     float vs string
Ответ Создать тему
Опции темы

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