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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.84
Dimarik__
21 / 21 / 1
Регистрация: 29.04.2010
Сообщений: 444
#1

Ошибка 6 error C2664: strtok: невозможно преобразовать параметр 1 из "const char *" в "char *" - C++

22.03.2011, 19:13. Просмотров 2579. Ответов 9
Метки нет (Все метки)

C++
1
2
string s = "555 44 55 66";//размер строки заранее неизвестен
                char* p = strtok(s.c_str(), ' ');
не нравится такое компилятору. пишет
Ошибка 6 error C2664: strtok: невозможно преобразовать параметр 1 из "const char *" в "char *"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2011, 19:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка 6 error C2664: strtok: невозможно преобразовать параметр 1 из "const char *" в "char *" (C++):

error C2664: strcmp: невозможно преобразовать параметр 1 из "char (*)[20]" в "const char *" - C++
for(int i = 0; i< 5; i++) { wr_struc (list); if (strcmp(&list.Sostav,osn_sostav)==0 && strcmp(&list.MestoVkomande,attack)==0...

Error C2664: RegisterClassW: невозможно преобразовать параметр 1 из "WNDCLASSEX *" в "const WNDCLASSW *" - C++
почему выдаёт ошибку? int RegClass(WNDPROC Proc,LPCTSTR szName,UINT brBackground){ WNDCLASSEX wc; ...

Error C2440: return: невозможно преобразовать "const char *" в "const char (&)[6]" - C++
Вроде все правильно а все равно не работает. Подскажите в чем ошибка #include <iostream> template<typename T> inline const T...

Невозможно преобразовать параметр 2 из "char" в "const char *" - C++
Ошибка strcpy: невозможно преобразовать параметр 2 из "char" в "const char *" //удаления из первой строки всех символов, встречающихся...

невозможно преобразовать параметр 1 из "const char [8]" в "LPCWSTR" - C++
msoftcon.h //msoftcon.h //declarations for Lafore's console graphics functions //uses Window's console functions #ifndef...

Невозможно преобразовать параметр 1 из "const wchar_t [12]" в "const char *" - C++
Писал программу. Дошел до наложения текстур. Пытаюсь наложить 4-й час. Много разных ошибок. Все ошибки гуглил. На данный момент ошибка...

9
slice
35 / 78 / 4
Регистрация: 04.11.2010
Сообщений: 249
22.03.2011, 19:20 #2
так делать нельзя, потому что strtok кромсает, подаваемую ему строку. Для стринга такое внешнее вмешательство неприемлемо. Можешь завести динамический массив и скопировать символы в него. А уже этот массив подавaть в strtok.
2
Dimarik__
21 / 21 / 1
Регистрация: 29.04.2010
Сообщений: 444
22.03.2011, 20:10  [ТС] #3
Уже запарился с этими плюсами.
Вот код на C#. Можете помочь мне его перевести на c++?
C#
1
2
3
4
5
6
string []strarray = s1.Split(' ');
            int[] iArray = new int[strarray.Length];
            for (int i = 0; i < strarray.Length; i++)
            {
                iArray[i] = Convert.ToInt16(strarray[i]);
            }
Вообще у меня исходная строка имеется как объект класса string (c++), она выглядит так:
12 156 144 1 0 55
ну и так далее. Думаю смысл понятен. Числа, разделенные пробелами. Мне эти числа надо тупо перевести в массив int
0
slice
35 / 78 / 4
Регистрация: 04.11.2010
Сообщений: 249
22.03.2011, 20:19 #4
используй stringstream
1
Somebody
2789 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,193
Завершенные тесты: 1
22.03.2011, 20:28 #5
C++
1
2
3
4
string s = "555 44 55 66";
vector<int> a;
istringstream ss(s);
copy(istream_iterator<int>(ss), istream_iterator<int>(), back_inserter(a));
1
Dimarik__
21 / 21 / 1
Регистрация: 29.04.2010
Сообщений: 444
22.03.2011, 21:06  [ТС] #6
а можно это сделать динамическим массивом (без вектора)?
0
asics
Freelance
Эксперт С++
2847 / 1782 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
22.03.2011, 21:15 #7
Dimarik__, Так можно, если числа в строке строго разделены одним пробелом.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <algorithm>
#include <string>
#include <iostream>
#include <sstream>
#include <cstdlib>
 
int main(){
  std::string s = "555 44 55 66";
  size_t len = std::count(s.begin(), s.end(), ' ') + 1;
  int *a = new int[len];
  std::istringstream ss(s);
  for(int i = 0; i < len; ++i){
    ss >> s;
    a[i] = atoi(s.c_str());
    std::cout << a[i] << ' ';
  }
  delete[] a;
  return 0;
}
1
Dimarik__
21 / 21 / 1
Регистрация: 29.04.2010
Сообщений: 444
22.03.2011, 21:46  [ТС] #8
#include <algorithm>
- а это зачем?

Добавлено через 3 минуты
ss >> s;
- и каким тут образом мы двигаемся по этим числам?
Если я не ошибаюсь, если прописать
cin>>"555 44";
то в переменную будет записано 555.
как я понял, каждая a[i] будет 555. Или я где-то ошибаюсь?
0
asics
Freelance
Эксперт С++
2847 / 1782 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
22.03.2011, 22:12 #9
Цитата Сообщение от Dimarik__ Посмотреть сообщение
#include <algorithm>
- а это зачем?
Инициализация алгоритмов из STL.
Цитата Сообщение от Dimarik__ Посмотреть сообщение
ss >> s;
- и каким тут образом мы двигаемся по этим числам?
ss - это входной поток, в котором записана наша строка.И оператором >> мы читаем данные в строку, разделителем служит пробел.

Цитата Сообщение от Dimarik__ Посмотреть сообщение
Если я не ошибаюсь, если прописать
cin>>"555 44";
то в переменную будет записано 555.
Не совсем понял, что Вы имеете ввиду.
Цитата Сообщение от Dimarik__ Посмотреть сообщение
как я понял, каждая a[i] будет 555. Или я где-то ошибаюсь?
Каждая a[i] будет местить в себе очередное число строки.
0
easybudda
Модератор
Эксперт CЭксперт С++
9664 / 5614 / 952
Регистрация: 25.07.2009
Сообщений: 10,778
22.03.2011, 23:33 #10
Цитата Сообщение от Dimarik__ Посмотреть сообщение
#include <algorithm>
- а это зачем?
http://www.cplusplus.com/reference/algorithm/
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.03.2011, 23:33
Привет! Вот еще темы с ответами:

error C2664: CWnd::MessageBoxW: невозможно преобразовать параметр 2 из "long" в "LPCTSTR" - C++
при компиляции выдаёт ошибку указанную в теме, код: void Clab_12_2Dlg::OnClickedAri() { // TODO: добавьте свой код обработчика...

Error C2664: sprintf: невозможно преобразовать параметр 1 из 'const char *' в 'char *' - C++
error C2664: sprintf: невозможно преобразовать параметр 1 из 'const char *' в 'char *' void crpost(const statep &amp;struc1) { ...

Преобразовать параметр из "WCHAR [260]" в "const char *" - C++
Подскажите пожалуйста, как &quot; преобразовать параметр из &quot;WCHAR &quot; в &quot;const char *&quot;&quot;? Вот,по коду я думаю понятно будет. Если поставить...

Невозможно преобразовать "const char" в "char" - C++
Вот код: void vvod() { char name_of_file; int i; char linetype1; char linetype2; int razmer_pera; struct colour {


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

Или воспользуйтесь поиском по форуму:
10
Yandex
Объявления
22.03.2011, 23:33
Ответ Создать тему
Опции темы

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