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

Преобразовать строку в массив - C++

Восстановить пароль Регистрация
 
madbounce
0 / 0 / 0
Регистрация: 20.04.2012
Сообщений: 24
02.06.2013, 21:47     Преобразовать строку в массив #1
Всем привет. Очень нужна помощь, голову уже сломал. Ситуация следующая. Есть строка
C++
1
2
3
4
5
6
7
8
9
10
11
12
char* stroka; 
stroka=(char*)fp["v"].c_str();  
int len=strlen(stroka); 
for(int i=0;i<len;++i) {
    if (stroka[i]=='V'){
    stroka[i]=' ';
    }
    if (stroka[i]=='+'){
    stroka[i]=' ';
    }
}
    std::cout<<stroka;
Строка эта выдает следующие значения :
-1.59222100115343 1.48241265624629 -0.713754241896364 0.603945896989231 -0.274520862267832 -0.968246360603992 -0.968246360603992 -0.968246360603992 -0.968246360603992 -0.968246360603992

И есть структура
C++
1
2
3
4
5
6
7
8
double z[] = {        // Исходные данные
-1.59222100115343, 1.48241265624629, -0.713754241896364, 0.603945896989231, -0.274520862267832, -0.968246360603992, -0.968246360603992, -0.968246360603992, -0.968246360603992, -0.968246360603992
},
         *data1,        // Корреляционная матрица
        *data2,        // Редуцированная корреляционная матрица
        *t,            // Матрица факторного отображения
        *s,            // Дисперсии
        buf;           // Рабочая переменная
Так вот суть в том что нужно в строке те значения которые нужно подставить в double z.
То есть что бы было : double z[] = { здесь должна быть stroka }
Пробовал, делал, писал что-то подобное :
C++
1
2
3
4
5
6
7
8
9
10
11
const int MAX_NUMBERS = 1000;
double z[MAX_NUMBERS],
         *data1,        // Корреляционная матрица
        *data2,        // Редуцированная корреляционная матрица
        *t,            // Матрица факторного отображения
        *s,            // Дисперсии
        buf;           // Рабочая переменная
for (int i = 0; i < MAX_NUMBERS; i++) {
   int res = sscanf(stroka, "%lf",&z[i]);
   if (res == EOF) return;
}
Ничего не получилось, кто может подскажите пожалуйста

Добавлено через 24 минуты
UPD:
Вот сейчас еще сделал динамический массив, но проблему заполнения так и не могу решить
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
counter_word=0;
    for (i=0;i<strlen(stroka)-1;i++)
 if ((stroka[i]==' ') && (stroka[i+1]!=' '))
  counter_word=counter_word+1;
if (stroka[0]!=' ')
    counter_word=counter_word+1;
//cout<<"В строке: "<<counter_word<<" слов";
 
 
 
 
    //const int MAX_NUMBERS = 10;
 
double *z = new double [counter_word],
            *data1,        // Корреляционная матрица
        *data2,        // Редуцированная корреляционная матрица
        *t,            // Матрица факторного отображения
        *s,            // Дисперсии
        buf;           // Рабочая переменная
for (int i = 0; i < counter_word; i++) {
   int res = sscanf(stroka, "%lf",&z[i]);
   if (res == EOF) return;
}
Добавлено через 1 час 49 минут
Как я понял запара по-моему в sscanf. Кто что может посоветовать пожалуйста помогите решить проблему.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.06.2013, 21:47     Преобразовать строку в массив
Посмотрите здесь:

C++ Как правильно преобразовать строку символов в строку типа CComBSTR?
C++ Преобразовать строку s в верхний регистр и переписать результат в строку S1
Массив строк преобразовать в строку C++
ПреобразоваТЬ строку символов в массив C++
Преобразовать массив цифр в строку для вывода на cout<< C++
C++ Как строку, заполненную числами, преобразовать в числовой массив?
C++ Как преобразовать строку char в массив int?
C++ Преобразовать строку из файла, содержащую запись десятичного числа, в строку с двоичным числом

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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