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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
opax
0 / 0 / 0
Регистрация: 29.03.2010
Сообщений: 21
#1

declaration of 'std::string s' shadows a parameter - C++

18.02.2012, 09:17. Просмотров 2001. Ответов 6
Метки нет (Все метки)

PHP
1
<?php echo 'Приветствую тебя, '.$user->get('username') ?> <?php endif ?>
О многоуважаемый, зри в void CH.

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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <stdio.h>
#include <stdlib.h>
 
 
using namespace std;
int q=0;
int stat_first[32],stat_second[32]; //Частотные Характеристики для 1 и 2 текста
char alf[]= {'а','б','в','г','д','е','ё','ж','з','и','й','к','л','м','н','о','п',
             'р','с','т','у','ф','х','ц','ч','щ','ш','ь','ы','ъ','э','ю','я',};
char alf2[]= {'а','б','в','г','д','е','ё','ж','з','и','й','к','л','м','н','о','п', //этот алфавит будет другим и нужен будет для шифра подстановки
             'р','с','т','у','ф','х','ц','ч','щ','ш','ь','ы','ъ','э','ю','я',}; // и для дальнейшего восстановления текста по ЧХ 
 
 
template<class T>
void qs(T* a,char* b,long N) { //быстрая сортировка массива ЧХ с привязкой алфавита
 
  long i = 0, j = N;        // поставить указатели на исходные места
  T temp,temp2,p;
 
  p = a[ N>>1 ];        // центральный элемент
 
  // процедура разделения
  do {
    while ( a[i] < p ) i++;
    while ( a[j] > p ) j--;
 
    if (i <= j) {
      temp = a[i]; a[i] = a[j]; a[j] = temp;
      temp2 = b[i]; b[i] = b[j]; b[j] = temp2;
      i++; j--;
    }
  } while ( i<=j );
 
  // рекурсивные вызовы, если есть, что сортировать 
  if ( j > 0 ) qs(a,b,j);
  if ( N > i ) qs(a+i,b+i,N-i);
}
 
/*Находим ЧХ для текста*/
void CH(const char* filename,int* stat,char* alf,string* s){
  ifstream in(filename);
  stringstream a;
  a << in.rdbuf();
  string s(a.str()); //ругается на эту конструкцию, так как обьявил не правильно.
  //Вопрос. как объявить в параметрах функции передачу строки правильно, 
  //если я хочу использовать каждый раз один поток?
 
  for (int i=0; i<=32; i++)
    {
      for (int j=0; j<=s.size(); j++)
        {
          if ((s[j]==alf[i]))
            {
              stat[i]=stat[i]+1;
            }
        }
      q+=stat[i]; //считаем общее кол-во букв
    };  
    qs(stat,alf,32); //сортируем массив ЧХ с привязкой к алфавиту
    cout<<"Количество букв в тексте "<<q<<" из них:"<<endl;
    for (int j=0; j<=32; j++)
    {
      cout<<alf[j]<<" = "<<stat[j]<<endl;    
    } 
   a.str().resize(0); // убираемся в потоке для следующего файла
   a.str().clear();
   a.str( "" );
} 
 
int main(int argc, char *argv[])
{
  setlocale(LC_CTYPE, "rus");
  
 
  //CH("text_1.txt",stat_first,alf,string s);
  //CH("text_2.txt",stat_second,alf2,string g);
 
 
 
  system("PAUSE");
  return EXIT_SUCCESS;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2012, 09:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос declaration of 'std::string s' shadows a parameter (C++):

TPosition.cpp|49|error: declaration of 'TMatrix Turn' shadows a parameter - C++
class TVector { //------------------------------------------------------------------------------------------------- public :...

C:\Projects\mmz\Compile\CompileAMD64\mmzCompileAMD64\TProjec t.cpp|74|error: declaration of 'std::ofstream File' shadows - C++
error: declaration of 'std::ofstream File' shadows a parameter| std::ofstream File;

cannot convert parameter 1 from 'int' to 'std::string &' - C++
string kolvo(string &amp;S, int &amp;k) { unsigned int i; for(i=1; i&lt;S.length(); i++) if(S=='B' &amp;&amp; S==' ') k=k+1; } ...

ошибка error: cannot convert 'std::string {aka std::basic_string<char>}' to 'std::string* {aka std::basic_stri - C++
на вод поступают 2 строки типа string. определить количество вхождений строки 2 в строку 1 ошибка error: cannot convert 'std::string {aka...

запрошено преобразование от ‘const std::string*’ к нескалярному типу ‘std::string’ - C++
private: std::string firstName; }; std::string ClientData::getFirstName() const{ return firstName; } Дает в итоге...

На основе исходного std::vector<std::string> содержащего числа, создать std::vector<int> с этими же числами - C++
подскажите есть вот такая задача. Есть список . Создать второй список, в котором будут все эти же числа, но не в виде строк, а в виде...

6
AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
18.02.2012, 10:40 #2
C++
1
void CH(const char* filename,int* stat,char* alf,string& s) //по ссылке
C++
1
string s(a.str());//а это что? редефинишн? у тебя s передалось уже, зачем еще объявлять
C++
1
s(a.str());//вот так
0
opax
0 / 0 / 0
Регистрация: 29.03.2010
Сообщений: 21
18.02.2012, 10:52  [ТС] #3
и того:
0
Миниатюры
declaration of 'std::string s' shadows a parameter  
AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
18.02.2012, 11:09 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
покажи вызов. то бишь мэйн
 
int main(int argc, char *argv[])
{
  setlocale(LC_CTYPE, "rus");
  
//тут нет объявленной строки. это 1.
 
string s;
 
// CH("text_1.txt",stat_first,alf,string s); 
//и здесь надо 
CH("text_1.txt",stat_first,alf,s)
  //CH("text_2.txt",stat_second,alf2,string g);
 
 
 
  system("PAUSE");
0
opax
0 / 0 / 0
Регистрация: 29.03.2010
Сообщений: 21
18.02.2012, 11:17  [ТС] #5
пожалуйте,в main всё верно, таже ошибка. без обьявленного стринга внутри функции конструкция отказывается работать, можно было бы конечное убрать из параметров функции строку и подчищать её в конце, но мне потом с этими строками нужно работать.
0
Миниатюры
declaration of 'std::string s' shadows a parameter  
AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
18.02.2012, 11:42 #6
opax, все верно. будет ругаться. скажи чего нужно то?
передать в строку данные из потока?


тогда

C++
1
2
3
4
ifstream in(filename);
  stringstream a;
  a << in.rdbuf();
  s.append(a.str());//вместо s(a.str()) поскольку s уже создана была в мэйне
1
opax
0 / 0 / 0
Регистрация: 29.03.2010
Сообщений: 21
18.02.2012, 13:27  [ТС] #7
спасибо, то что нужно.
0
18.02.2012, 13:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.02.2012, 13:27
Привет! Вот еще темы с ответами:

Реализация класса MyString. Стандартная библиотека, std::string, std::vector - C++
как добавить реализацию конкатенации строк через перегрузку оператора &quot;+=&quot; в классе MyString и почему ошибка выдается???#include...

Операция std::cout для Объекта типа std::string - C++
Кто детально объяснит почему не выводит ? Дает вот так &quot;Отсутствует оператор &quot;&lt;&lt;&quot;, соответствующий этим операндам&quot; void...

Передача функции указатель на элемент std::vector<std::string> - C++
Доброй ночи тем, кому не спится (или живет в другом часовом поясе:p)! Есть функция, требующая в качестве параметра указатель на...

Как правильно перевести std::wstring в std::string ? - C++
Собственно как? :)


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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