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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.81
psdmaster
0 / 0 / 0
Регистрация: 05.02.2013
Сообщений: 44
#1

Конкатенация строк - C++

02.04.2013, 20:23. Просмотров 2266. Ответов 30
Метки нет (Все метки)

Нужно объединить три строки: "txt/" + i + ".txt" в char* URL. i переменная в цикле.

Сделал так:
C++
1
2
3
strcpy(URL, "txt/\0");
strcat(URL, (char*)i);
strcat(URL, ".txt\0");
Ошибка:
d:\c++\fonbettoto\fonbettoto\fonbettoto.cpp(271): error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

Добавил:
C++
1
#define _CRT_SECURE_NO_WARNINGS
Ошибка:
1>d:\c++\fonbettoto\fonbettoto\fonbettoto.cpp(1): warning C4603: '_CRT_SECURE_NO_WARNINGS' : macro is not defined or definition is different after precompiled header use
1> Add macro to precompiled header instead of defining here
1> d:\c++\fonbettoto\fonbettoto\fonbettoto.cpp(4) : use of precompiled header
1>d:\c++\fonbettoto\fonbettoto\fonbettoto.cpp(271): error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

Есть идеи? Можно принципиально код поменять.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2013, 20:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Конкатенация строк (C++):

конкатенация строк - C++
Доброго времени суток! есть следующий код, который читает файл: char line; string str = ""; ifstream...

Конкатенация строк - C++
Здраствуйте. Проблема в следующем: (строка 57) нужно прибавить элемент массива типа string к переменной типа string, но при запуске...

Конкатенация строк - C++
Здравствуйте, у меня такая проблема. Имеется переменная типа LPCWSTR мне в нее необходимо сохранить другую переменную типа LPCWSTR и...

Конкатенация строк - C++
Добрый день. Скажите, плз, как в ц++ соединить в единую строку следующее: myString = argv + i + "тут некоторый текст." argv - ну ясно...

Конкатенация строк - C++
Должно быть консольное приложение. Очень простой вопрос, но сам что-то завис, и немогу найти что хочу. Значит так есть такой кусок кода ...

Конкатенация строк - C++
Имеется две строки string1 и string2, мне нужно что бы строка string3 содержала в себе обе, сначало string1, потом string2. Kак это сделать...

30
psdmaster
0 / 0 / 0
Регистрация: 05.02.2013
Сообщений: 44
02.04.2013, 23:36  [ТС] #16
yoghurt92,
Нет дело не в этом. В скобках должны быть обязательно переменные. Такая строчка почему-то не допускается:
C++
1
string URL("txt/" + i + format);
Ну да бог с ним. Что делать с этим:

Цитата Сообщение от psdmaster Посмотреть сообщение
И что делать если файлов больше 10? в 'i' помещается только один символ.
Добавлено через 1 минуту
Цитата Сообщение от yoghurt92 Посмотреть сообщение
psdmaster, потому что путь должен быть латинскими буквами.

Добавлено через 2 минуты
psdmaster, и лучше придумать название файлами, а не цифры...
Число файлов будет расти. Вплоть до 1000.txt
0
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
03.04.2013, 00:08 #17
psdmaster,

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
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
using namespace std;
 
string IntToStr(int x)
{
    stringstream sst;
    sst << x;
    return sst.str();
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    string format(".txt"), str;
    stringstream r;
 
    for(int i = 1; i <= 1000; ++i)
    {
        string value(IntToStr(i));
        string URL(value + format);
        
        ifstream fin(URL);
        getline(fin, str, '\n');
 
        cout << str << endl;
    }
 
    return 0;
}
0
Програмер_80лвл
15 / 15 / 1
Регистрация: 17.10.2012
Сообщений: 96
Записей в блоге: 1
03.04.2013, 00:14 #18
пфф пацан это делается просто :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    char *Txt=new char[4];
    Txt="txt/";
    char *txt=new char[5];
    txt=".txt/";
    char *tSave=new char[10];
    for(int i=0;i<10;i++)
    {
        char *z=new char[2];
        itoa(i,z,10);
        //вот тебе i в цикле и без всяких там приколов
        // Тут можеш писать то что тебе нада с этой i
    }
    //Здесь я напишу то как же все-же добавляется Txt+i+txt  уменя i будет числом 5
    char *I=new char[1];
    I="5";
    strcpy(tSave,Txt);
    strcat(tSave,I);
    strcat(tSave,txt);
    // все...
0
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
03.04.2013, 00:19 #19
Цитата Сообщение от Програмер_80лвл Посмотреть сообщение
char *Txt=new char[4]
тогда уже
C++
1
char *Txt=new char[5]
, про нуль символ забыли?
0
Програмер_80лвл
15 / 15 / 1
Регистрация: 17.10.2012
Сообщений: 96
Записей в блоге: 1
03.04.2013, 00:26 #20
а вот тебе с string :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    string URL;
    
    string Txt="txt/";
    string txt=".txt";
    //для преобразование из const char* в char* тебе понадобится
    char *t=new char[z.size()];
    // i ->
    for(int i=0;i<10;i++)
    {
        string z;
        t=(char*)z.c_str();
        itoa(i,t,10);
    }
    URL.append(Txt.c_str());
    URL.append(t);
    URL.append(txt);
Добавлено через 3 минуты
Цитата Сообщение от yoghurt92 Посмотреть сообщение
тогда уже
C++
1
char *Txt=new char[5]
, про нуль символ забыли?
а зачем он вообще ты когда копируеш он то не копируется и при вставки то тож
на своем опыте знаю=)
и ещё когда работаеш с char нада быть внимателен с этой штукой :
1) лучше всего создавать динамически
2) string есть куча реализованых методов для работы с ними
и не нада использовать strcpy,strcat и тому подобное !
3) char только когда тебе нужен всего 1-10 символов для вставки или для какого-то шаблончика =)
1
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
03.04.2013, 00:27 #21
Цитата Сообщение от Програмер_80лвл Посмотреть сообщение
char *t=new char[z.size()];
* * // i ->
* * for(int i=0;i<10;i++)
* * {
* * * * string z;
* * * * t=(char*)z.c_str();
* * * * itoa(i,t,10);
* * }
что вы за хрень несете?!? вы выделяете память исходя из размера не инициализированной переменной, да что там инициализированной, вы даже не объявили z а уже

Цитата Сообщение от Програмер_80лвл Посмотреть сообщение
char *t=new char[z.size()];
0
Програмер_80лвл
15 / 15 / 1
Регистрация: 17.10.2012
Сообщений: 96
Записей в блоге: 1
03.04.2013, 00:31 #22
Цитата Сообщение от psdmaster Посмотреть сообщение
Выводит шляпу какую-то:
для того тчоб выводило не шляпу пиши setlocale()
я уже непомню какие параметры может по гуглиш или используй
_cputws(L"TEXT");
тож шняга полезная =)

Добавлено через 1 минуту
Цитата Сообщение от yoghurt92 Посмотреть сообщение
* * * * string z;
А Это что ! Такое !?*
Мммм думаю Вам нада Пыль с экрана протереть...
или просто выспатся
0
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
03.04.2013, 00:33 #23
Цитата Сообщение от Програмер_80лвл Посмотреть сообщение
string URL;
string Txt="txt/";
* * string txt=".txt";
* * //для преобразование из const char* в char* тебе понадобится
* * char *t=new char[z.size()];
* * // i ->
* * for(int i=0;i<10;i++)
* * {
* * * * string z;
* * * * t=(char*)z.c_str();
* * * * itoa(i,t,10);
* * }
* * URL.append(Txt.c_str());
* * URL.append(t);
* * URL.append(txt);
пыль со своего экрана вытри, снчала смотри что пишешь, если ты шлак несешь.
0
Програмер_80лвл
15 / 15 / 1
Регистрация: 17.10.2012
Сообщений: 96
Записей в блоге: 1
03.04.2013, 00:34 #24
Цитата Сообщение от yoghurt92 Посмотреть сообщение
пыль со своего экрана вытри, снчала смотри что пишешь, если ты шлак несешь.
Эмм Сори я просто ее сначала создал в цикле потом перед отправкой перенес=)
Извините* Моя ошибка=)
0
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
03.04.2013, 00:35 #25
Програмер_80лвл, да ты что? а я то думал моя... браво.
0
psdmaster
0 / 0 / 0
Регистрация: 05.02.2013
Сообщений: 44
03.04.2013, 00:36  [ТС] #26
ребята, давайте без батлов.
0
Програмер_80лвл
15 / 15 / 1
Регистрация: 17.10.2012
Сообщений: 96
Записей в блоге: 1
03.04.2013, 00:38 #27
yoghurt92, Ээ а может хватит Тролить того человека который помог другому незнающему человеку...
0
psdmaster
0 / 0 / 0
Регистрация: 05.02.2013
Сообщений: 44
03.04.2013, 01:11  [ТС] #28
Програмер_80лвл,

Итак вот что получилось:
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
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    string str, URL;
    char *z = new char[3]; 
 
    for(int i = 1; i <= 3; ++i)
    {
        itoa(i, z, 10);
        
        URL = "txt/";
        URL = URL + z + ".txt";
        
        ifstream fin(URL);
        cout << URL << endl;
        
        getline(fin, str, '\n');
 
        cout << str << endl;
        fin.close();
    }
 
    getchar();
 
    return 0;
}
Ошибка:
error C4996: 'itoa': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _itoa. See online help for details.
1> d:\microsoft visual studio 11.0\vc\include\stdlib.h(909) : see declaration of 'itoa'
0
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
03.04.2013, 09:06 #29
psdmaster, используй

C++
1
_itoa
0
Програмер_80лвл
15 / 15 / 1
Регистрация: 17.10.2012
Сообщений: 96
Записей в блоге: 1
06.04.2013, 03:01 #30
Цитата Сообщение от psdmaster Посмотреть сообщение
_itoa.
это не ошибка а предупкиждение потомучто потоко не безопасно но так как утебя нет потоков ты можеш использовать...
0
06.04.2013, 03:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.04.2013, 03:01
Привет! Вот еще темы с ответами:

конкатенация строк - C++
Подскажите, почему не компилируется код: std::string ExtractFileName(std::string filename) { if (filename.size() == 0)...

Конкатенация строк s1 и s2 - C++
Есть код консольного приложения. В конце когда ответ, какието символы. Где же что не так?? #include &quot;stdafx.h&quot; #include...

Конкатенация строк - C++
Помогите,пожалуйста,идиоту.Не понимаю как правильно конкатенацию строк написать(&quot;сложение&quot; строк) #include &lt;iostream&gt; class...

Конкатенация строк - C++
Разбираю учебный пример - написать класс для работы со строками. Всего два поля: private: int _size; // длина строки, без...


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

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

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