#c #string #file
Вопрос:
У меня проблема, но я не знаю, как ее решить. Кто-нибудь может мне помочь? Проблема. В текстовом файле
1. 20.20
2. 3
Я хочу взять данные из файла и использовать их. Мой код:
int main()
{
string tp;
float data_1 = 0, data_2 = 0, total = 0;
std::fstream file;
file.open("text.txt", ios::in);
std::getline(file, tp);
data_1 = std::stof(tp);
std::getline(file, tp);
data_2 = std::stof(tp);
total = dat_1 * data_2;
cout << "Total: " << total << endl;
}
В программе всего не 60,60, но это необходимо. В чем проблема?
Комментарии:
1. Что случилось с текстовым файлом? Это номера строк? Действительно ли файл содержит число в начале каждой строки? Или это просто проблема с форматированием в SO? Также: Какой результат вы получаете? Вы пытались использовать отладчик? Если нет, то это отличная возможность научиться им пользоваться.
2. Ты действительно этого хочешь
60,60
, нет60.60
?3. Также ваш
text.txt
действительно содержит1.
и2.
?4. В текстовом файле есть 2 строки. Первая строка-20.20, а вторая строка-3. И я хочу получить 60,60.
5. какой итог[так,это продукт, а не итог] вы получили?
Ответ №1:
#include <iostream>
#include <string>
#include <fstream>
int main(void)
{
std::string tp;
float data_1 = 0, data_2 = 0, total = 0;
std::ifstream file("text.txt");
std::getline(file, tp);
data_1 = std::stof(tp);
std::getline(file, tp);
data_2 = std::stof(tp);
total = data_1 * data_2; // you wrote dat_1 instead of data_1
std::cout << total << std::endl;
return (0);
}
Комментарии:
1. В программе я получил ошибку. ошибка: «stof» не является членом «std», он находится в строках, где записано data_1 = std::stof(tp);
Ответ №2:
Во-первых, dat_1
не декларируется, а должно быть data_1
.
Затем вы можете использовать std::fixed
его, чтобы указать количество цифр после точки и std::setprecision
указать количество цифр.
cout << "Total: " << std::fixed << std::setprecision(2) << total << endl;
Рекомендации:
- std::исправлено, std::научное, std::шестнадцатеричное, std::по умолчанию — cppreference.com
- std::настройка точности — cppreference.com
Если вы действительно хотите 60,60
, а не 60.60
печатаете , вы можете использовать std::replace
для изменения символа.
#include <iostream>
#include <string>
#include <iomanip>
#include <algorithm>
#include <sstream>
using std::ios;
using std::cout;
using std::endl;
int main(){
float total = 60.60;
std::stringstream ss;
ss << std::fixed << std::setprecision(2) << total << endl;
std::string str = ss.str();
std::replace(str.begin(), str.end(), '.', ',');
cout << "Total: " << str << endl;
}
Комментарии:
1. Нет, я хочу получить 60,60. Но в текстовом файле можно было бы написать другое число.