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

Аналог AnsiString в Qt - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 5.00
Koketka
5 / 5 / 0
Регистрация: 27.11.2009
Сообщений: 232
19.04.2011, 21:35     Аналог AnsiString в Qt #1
Чтобы в программе использовать тип AnsiString, что нужно подключить : #include *** ????
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2011, 21:35     Аналог AnsiString в Qt
Посмотрите здесь:

AnsiString C++
Передача AnsiString по ссылке C++
AnsiString обуляет char C++
C++ работа с AnsiString
C++ Преобразование из AnsiString в Double
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16833 / 5254 / 323
Регистрация: 30.03.2009
Сообщений: 14,145
Записей в блоге: 26
19.04.2011, 21:55     Аналог AnsiString в Qt #2
Вопрос про AnsiString
Koketka
5 / 5 / 0
Регистрация: 27.11.2009
Сообщений: 232
19.04.2011, 22:11  [ТС]     Аналог AnsiString в Qt #3
#include<vcl.h> не помогло,
я пишу в qt...
пишет что нет такой директории
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16833 / 5254 / 323
Регистрация: 30.03.2009
Сообщений: 14,145
Записей в блоге: 26
19.04.2011, 22:13     Аналог AnsiString в Qt #4
В qt нету AnsiString. Это borland'овская фича
Koketka
5 / 5 / 0
Регистрация: 27.11.2009
Сообщений: 232
19.04.2011, 22:17  [ТС]     Аналог AnsiString в Qt #5
а что можно вместе нее использовать, чтобы применить функции:
.Length()
StrPos
.c_str()
StrToln
SubString
эти хоть есть в qt?
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16833 / 5254 / 323
Регистрация: 30.03.2009
Сообщений: 14,145
Записей в блоге: 26
19.04.2011, 23:01     Аналог AnsiString в Qt #6
http://qtdocs.narod.ru/4.1.0/doc/html/qstring.html
Koketka
5 / 5 / 0
Регистрация: 27.11.2009
Сообщений: 232
20.04.2011, 00:56  [ТС]     Аналог AnsiString в Qt #7
1)
Coef[i-1] = atoi(str.mid(str.size() - 4*i, 4));

Вот тут мне необходимо конвертировать (str.mid(str.size() - 4*i, 4) в целый тип

попробовала функцию аtoi , toInt ничего не подходит,
переменная str, определена как QString str

2)
Необходима функция определяющая входит ли данная подстрока ch в строку NUM
const QString NUM = "0123456789";
QString ch

попробовала так
if (NUM.IndexOf(ch) != -1)
выдает ошибку
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
20.04.2011, 01:18     Аналог AnsiString в Qt #8
1) int QString::toInt
C++
1
str.mid(str.size() - 4*i, 4).toInt();
2) bool QString::contains
C++
1
2
3
4
5
const QString NUM = "0123456789";
const QString ch = "123";
...
if( NUM.contains(ch) )
...
Koketka
5 / 5 / 0
Регистрация: 27.11.2009
Сообщений: 232
20.04.2011, 01:43  [ТС]     Аналог AnsiString в Qt #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
BigInt::BigInt(char *A){  //объявление вида BigInt А("1234567")
  SizeMax = MAX_L;
  Coef = new int[SizeMax];
  int n = 0;   //храним задействование количесвто элементов массива
 
  QString ch, str ="";    //ch - тут храним текущий символ, str - тут храним число
 
  //проверяем, чтобы все введенные знаки были цифрами, и заносим его в переменную str
  for (int i=1; i<strlen(A); i++)
  {
      ch = "";
      ch += A[i];
      if (NUM.contains(ch) != -1) {
          n++;
          str+=ch;
      }
  }
для определения длины А, я использовала strlrn() выдал ошибку http://www.imagepost.ru/images/j/pa/...efdtlsjpsa.JPG
тут нельзя эту функцию использовать?
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
20.04.2011, 01:56     Аналог AnsiString в Qt #10
Это не ошибка, а предупреждение о сравнении знакового и беззнакового числа.
for (size_t i = 1; i < strlen(A); i++)

Добавлено через 3 минуты
Цитата Сообщение от Koketka Посмотреть сообщение
if (NUM.contains(ch) != -1)
зачем это сравнение с -1?
Koketka
5 / 5 / 0
Регистрация: 27.11.2009
Сообщений: 232
20.04.2011, 02:04  [ТС]     Аналог AnsiString в Qt #11
А вот тут не подскажешь?)
вот я описала класс:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class BigInt {
 
  int Size;             // Size - текущая длина (истинная длинна числа)
  int SizeMax;        // SizeMax - максимальная длина
  int *Coef;           // Массив коэффициентов (массив где храним наши четырехзнаяные числа)
  int Znak;            // Знак числа, либо 1(положительное число), либо -1(отрицательное)
 
public:
  BigInt();                       //Объявление вида BigInt A, конструктор по умолчанию
  BigInt(char *A);        //Объявление вида BigInt А("1234567")
  BigInt(const BigInt &A);        //Конструктор копирования
  ~BigInt();                      //Деструктор
 
  BigInt& operator=(const BigInt &A);   // Оператор присваивания
 
private:
  void Add(const BigInt &A, const BigInt &B, BigInt &C);     //СЛОЖЕНИЕ
  
  int DivRes(int dig, int size);
 
};
вот написала функции для сложения чисел:
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
void BigInt::Add(const BigInt &A, const BigInt &B, BigInt &C){    // СЛОЖЕНИЕ
    int i;
    long int slag;    //временная переменная
 
    //до выполнения переноса возможно slag > BASE
    const int *a = A.Coef, *b = B.Coef;
    int *c = C.Coef, carry = 0;   //carry - в этой переменной храним значение для переноса в страший разряд
 
    if (A.Znak*B.Znak > 0){   //Т.е. числа А и В имеют одинкаовые знаки, либо оба +, либо оба -,
       C.Znak = A.Znak;          //тогда и С будет такого же знака
 
       //нужно, чтобы B.Size <= A.Size
       if (A.Size < B.Size){
        Add(B,A,C);
           return;
       }       //вот теперь получили B.Size <= A.Size
 
       // Складываем два чилса
       for (i = 0; i<B.Size; i++){
           slag = a[i] + b[i] + carry;
           if (slag >= BASE){   //переполнение, перенсети единиицу
               c[i] = slag - BASE;
               carry = 1;
           } else {
              c[i] = slag;
              carry = 0;
           }
       }
 
       //меньшее число закончилось
       for (; i < A.Size; i++){
           slag = a[i] + carry;
           if (slag >= BASE){
               c[i] = slag - BASE;
               carry = 1;
           } else {
               c[i] = slag;
               carry = 0;
           }
       }
 
       //если carry не нулевое, т.е. остался перенос - добавить его в дополнитеьный разряд
       if (carry){
           C.Size = A.Size + 1;
           c[i] = carry;
       } else C.Size = A.Size;
   } else {
       if (A.Znak > 0) {
           B.Znak = 1;
           Sub(A,B,C);
       } else {
           A.Znak = 1;
           Sub(B,A,C);
       }
   }
 
};
выдает ошибку http://www.imagepost.ru/images/2/ye/2ye_1.JPG

не нравится ему A.Znak и B.Znak

мне нужно в параметрах ф-ии указать переменную знак??или как?

Добавлено через 4 минуты
Цитата Сообщение от rangerx Посмотреть сообщение
Это не ошибка, а предупреждение о сравнении знакового и беззнакового числа.
for (size_t i = 1; i < strlen(A); i++)

Добавлено через 3 минуты

зачем это сравнение с -1?
ой, все поняла просто я другую функцию сначала вставляла туда, она возвращала значение -1, если подстрока не входит в строку
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.04.2011, 09:03     Аналог AnsiString в Qt
Еще ссылки по теме:

как считать из бинарного файла AnsiString(ifstream) C++
C++ Функция AnsiString.data()

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

Или воспользуйтесь поиском по форуму:
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16833 / 5254 / 323
Регистрация: 30.03.2009
Сообщений: 14,145
Записей в блоге: 26
20.04.2011, 09:03     Аналог AnsiString в Qt #12
Цитата Сообщение от Koketka Посмотреть сообщение
не нравится ему A.Znak и B.Znak
Там же написано "in read-only structure". То бишь при наличии квалификатора const записывать вобхект нельзя
Yandex
Объявления
20.04.2011, 09:03     Аналог AnsiString в Qt
Ответ Создать тему
Опции темы

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