Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
12 / 12 / 7
Регистрация: 09.10.2013
Сообщений: 222
1

Что тут не так?

25.03.2014, 15:30. Показов 461. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Не понимаю - почему программа не работает... Если все string Заменить на массивы char, то всё нормально работает. В чем дело?

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
#include <windows.h> 
#include <iostream>
#include <fstream>
#include <string>
 
using namespace std;
 
 
void GetTags(string fileName, string tags);
void ClearArray(string arr);
/*void CutSome(string edited);*/
 
int main(){
    setlocale(LC_ALL,"Russian");
    fstream f;
    int imgId = 529;
    string fileUrl = "";
    string tags = "";
    f.open("file.sql", ios::out);
    WIN32_FIND_DATA findImg;
// Нахождение самого первого файла
    f << "INSERT INTO images" << endl << "(`imgId`, `fullName`, `tags`, `fileName`)"<<endl<<"VALUES"<<endl;
    HANDLE find = FindFirstFile("*.jpg", &findImg);
    if(find != INVALID_HANDLE_VALUE){
    GetTags(findImg.cFileName, tags);  // редактирование названия картинки для тегов
    f << "('"<< imgId << "', '" << findImg.cFileName << "', '" << tags << "', '"<< findImg.cFileName <<"');" << endl;
    imgId++;
    } else {
        cout<<"Error! Can't find any image...";
    }
// Поиск других файлов
    while (FindNextFile(find, &findImg)){
        ClearArray(tags);
        GetTags(findImg.cFileName, tags); // редактирование названия картинки для тегов
        f << "('"<< imgId << "', '" << findImg.cFileName << "', '" << tags << "', '"<< findImg.cFileName <<"');" << endl;
        imgId++;
    }
// Закрыть
    FindClose(find);
    f.close();
 
    system("PAUSE");
    return 0;
}
 
void GetTags(string fileName, string tags){
    for ( int i = 0; i < fileName.length(); i++) {
        if ((fileName[i] == ' ' || fileName[i] == '-')){
            tags[i] = ',';
        } else if (fileName[i] == '.') {
            break;
        }  else {
            tags[i] = fileName[i];
        }
    }
    /*CutSome(tags);*/
    cout<<tags<<endl;
}
 
/*void CutSome(string edited){
    for ( int i = 0; i < edited.length(); i++){
        if((edited[i] == '(' || edited[i] == ')') && (edited[i-1] == ',' || edited[i+1] == ',')){
            edited.erase(i, i+1);
        }
    }
}*/
 
void ClearArray(string arr){
    for(int i = 0; i < arr.length(); i++){
        arr[i] = '\0';
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.03.2014, 15:30
Ответы с готовыми решениями:

Да что тут не так?
По идее у меня должны выводится положительные числа #include &lt;iostream&gt; using namespace std;...

что тут не так???
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;iostream&gt; #include &lt;math.h&gt; #define size int...

Что тут не так?
# include &lt;iostream&gt; using namespace std; int number ; int department ; char name1 ; char...

что тут не так
//#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;clocale&gt; #include &lt;conio.h&gt; void main() {...

3
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
25.03.2014, 15:44 2
В функции
C++
1
2
3
4
5
6
7
8
9
10
void CutSome(string edited)
{
    for ( int i = 0; i < edited.length(); i++)
    {
        if((edited[i] == '(' || edited[i] == ')') && (edited[i-1] == ',' || edited[i+1] == ','))
        {
            edited.erase(i, i+1);
        }
    }
}
Не хватало закрывающей скобки
0
12 / 12 / 7
Регистрация: 09.10.2013
Сообщений: 222
25.03.2014, 16:17  [ТС] 3
Ну ту часть я закомментил, там пока не разбирался. Тут со строчками проблема, информация не помещается туда. Если, допустим, сделать так:
C++
1
string fileUrl = "fsafafgfgfgdfgdsfhfsfgsdffsgsfdggdf"
- то всё работает, тоесть изначально туда не вмещается ничего - как это можно исправить не задавая начальное значение строке?
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
25.03.2014, 17:20 4
Вопрос непонятен. Куда что не помещается?

Добавлено через 5 минут
fileUrl где в коде используется? Если строка пустая, то нельзя по индексу обращаться к её содержимому.

Добавлено через 8 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void GetTags(string fileName, string tags){
    for ( int i = 0; i < fileName.length(); i++) {
        if ((fileName[i] == ' ' || fileName[i] == '-')){
            tags += ',';
        } else if (fileName[i] == '.') {
            break;
        }  else {
            tags += fileName[i];
        }
    }
    /*CutSome(tags);*/
    cout<<tags<<endl;
}
0
25.03.2014, 17:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.03.2014, 17:20
Помогаю со студенческими работами здесь

Что тут не так?
Всем привет! Объясните пожалуйста почему этот код работает некорректно: while (count--) { ...

Что тут не так?
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; bool is_it(char *); int main(){...

строки. что-то тут не так
вот код //Программа удаления из строки символов '0..9' #include&lt;iostream&gt; // заголовыочный...

Подскажите,что тут не так?
# include &lt;iosDream.h&gt; int main { int counter != 0 ; loop; counter ++ ; cout&lt;&lt;...

Поясните чайнику что тут не так
Всем доброго времени суток. Вот как уже месяц учусь на компьютерного инженера. И всё было...

Делаю сапёр. что тут не так????
#include&lt;iostream.h&gt; #include&lt;dos.h&gt; #include&lt;time.h&gt; #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt;...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru