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

Перевод символьной строки в массив вещественных чисел - C++

Восстановить пароль Регистрация
 
Bright Color
1 / 1 / 0
Регистрация: 24.01.2014
Сообщений: 7
24.01.2014, 14:01     Перевод символьной строки в массив вещественных чисел #1
Помогите написать программу перевода введенной с клавиатуры строки в массив вещ-ых чисел, не используя scanf.
Чем больше пишу, тем больше ересь какая-то получается.
Числа отделяются друг от друга пробелом
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт C++
4377 / 3220 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
24.01.2014, 14:24     Перевод символьной строки в массив вещественных чисел #2
Цитата Сообщение от Bright Color Посмотреть сообщение
не используя scanf.
используйте std::istream
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
24.01.2014, 14:29     Перевод символьной строки в массив вещественных чисел #3
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
#include <iostream>
#include <sstream>
#include <string>
 
int main()
{
    std::string userString;
    std::cout << "Input the string: ";
    std::getline(std::cin, userString);
 
    std::string currentStringNumber;
    std::stringstream stream(userString);
 
    size_t arrayIndex = 0;
    double *array = new double [std::count(userString.begin(), userString.end(), ' ') + 1];
    std::cout << "Array: " << std::endl;
    while (stream >> currentStringNumber) {
        array[arrayIndex] = atof(currentStringNumber.c_str());
        std::cout << array[arrayIndex++] << ' ';
    }
    std::cout << std::endl;
    delete [] array;
    array = nullptr;
 
    std::system("pause");
    return 0;
}
Tulosba
:)
Эксперт C++
4377 / 3220 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
24.01.2014, 14:32     Перевод символьной строки в массив вещественных чисел #4
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
#include <iostream>
#include <vector>
 
int main() {
 
    std::vector<double> v;
 
    for(;;) // Ввод
    {
        double d = 0;
        std::cin >> d;
        if( !std::cin ) break;
        v.push_back(d);
    }
    
    // Вывод
    for( const auto& d : v )
    {
        std::cout << d << " ";
    }
    std::cout << '\n';
    
    return 0;
}
Bright Color
1 / 1 / 0
Регистрация: 24.01.2014
Сообщений: 7
24.01.2014, 15:58  [ТС]     Перевод символьной строки в массив вещественных чисел #5
Ev[G]eN, Спасибо. Не могли бы вы объяснить подробно вот этот момент
C++
1
2
3
while (stream >> currentStringNumber) {
        array[arrayIndex] = atof(currentStringNumber.c_str());
...}
?
Tulosba
:)
Эксперт C++
4377 / 3220 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
24.01.2014, 16:17     Перевод символьной строки в массив вещественных чисел #6
C++
1
2
3
while (stream >> currentStringNumber) { // Чтение из строкового потока в строку пока есть данные
array[arrayIndex] = atof(currentStringNumber.c_str()); // Перевод из Си-строки в число с плавающей точкой и сохранение в массиве
...}
P.S. По возможности, лучше не заморачиваться с сишными строками, а использовать std::string.
И stod для преобразования в частности
Yandex
Объявления
24.01.2014, 16:17     Перевод символьной строки в массив вещественных чисел
Ответ Создать тему
Опции темы

Текущее время: 04:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru