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

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

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

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

02.04.2013, 20:23. Просмотров 2218. Ответов 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
coloc
погромист
410 / 246 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
02.04.2013, 20:28 #2
Consider using strcpy_s instead
Может попробуйте эту функцию, вместо strcpy
0
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
02.04.2013, 20:30 #3
psdmaster,

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <string>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    string word1("Hello "), word2("world"), word3("!");
    word1 += word2 + word3;
 
    cout << word1 << endl;
 
    cout << "\n\n";
    return 0;
}
0
psdmaster
0 / 0 / 0
Регистрация: 05.02.2013
Сообщений: 44
02.04.2013, 21:14  [ТС] #4
Цитата Сообщение от yoghurt92 Посмотреть сообщение
psdmaster,

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <string>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    string word1("Hello "), word2("world"), word3("!");
    word1 += word2 + word3;
 
    cout << word1 << endl;
 
    cout << "\n\n";
    return 0;
}
как i добавить в строку?
0
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
02.04.2013, 21:20 #5
psdmaster, а что в вашем случае i?

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

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    char i = 'i';
    string word1("Hello "), word2("world"), word3("!");
    word1 += word2 + word3 + i;
 
    cout << word1 << endl;
 
    cout << "\n\n";
    return 0;
}
0
psdmaster
0 / 0 / 0
Регистрация: 05.02.2013
Сообщений: 44
02.04.2013, 21:25  [ТС] #6
i - переменная в цикле от 1 до 10

Цитата Сообщение от yoghurt92 Посмотреть сообщение
psdmaster, а что в вашем случае i?

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

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    char i = 'i';
    string word1("Hello "), word2("world"), word3("!");
    word1 += word2 + word3 + i;
 
    cout << word1 << endl;
 
    cout << "\n\n";
    return 0;
}
0
Croessmah
Эксперт CЭксперт С++
13407 / 7557 / 853
Регистрация: 27.09.2012
Сообщений: 18,590
Записей в блоге: 3
Завершенные тесты: 1
02.04.2013, 21:27 #7
Цитата Сообщение от psdmaster Посмотреть сообщение
Add macro to precompiled header instead of defining here
Не, не то выделил?
0
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
02.04.2013, 21:40 #8
psdmaster, ну так и что?

Добавлено через 6 минут
psdmaster,

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    
    string word1("Hello "), word2("world"), word3("!");
    word1 += word2 + word3;
    for(char i = '1'; i <= '9'; ++i)
        word1 += i;
 
    cout << word1 << endl;
 
    cout << "\n\n";
    return 0;
}
0
psdmaster
0 / 0 / 0
Регистрация: 05.02.2013
Сообщений: 44
02.04.2013, 21:46  [ТС] #9
Еще раз.
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
#define _CRT_SECURE_NO_WARNINGS
 
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string.h>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    string URL;
    int i = 0;
    char sym;
    for (i = 0; i < 10; ++i)
    {
        URL = "txt/" + i;
        URL += ".txt";
        cout << URL;
 
        ifstream tirazh(URL);
        tirazh.unsetf(ios::skipws);
        tirazh >> sym;
        tirazh.close();
    }
 
    return 0;
}
Выдает ошибку:

Код
1>------ Build started: Project: ConsoleApplication1, Configuration: Debug Win32 ------
1>  stdafx.cpp
1>  ConsoleApplication1.cpp
1>d:\c++\consoleapplication1\consoleapplication1\consoleapplication1.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++\consoleapplication1\consoleapplication1\consoleapplication1.cpp(3) : use of precompiled header
1>d:\c++\consoleapplication1\consoleapplication1\consoleapplication1.cpp(19): error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'std::string' (or there is no acceptable conversion)
1>          d:\microsoft visual studio 11.0\vc\include\ostream(695): could be 'std::basic_ostream<_Elem,_Traits> &std::operator <<<char,std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const char *)'
1>          with
1>          [
1>              _Elem=char,
1>              _Traits=std::char_traits<char>
1>          ]
1>          d:\microsoft visual studio 11.0\vc\include\ostream(742): or       'std::basic_ostream<_Elem,_Traits> &std::operator <<<char,std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,char)'
1>          with
1>          [
1>              _Elem=char,
1>              _Traits=std::char_traits<char>
1>          ]
1>          d:\microsoft visual studio 11.0\vc\include\ostream(780): or       'std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const char *)'
1>          with
1>          [
1>              _Elem=char,
1>              _Traits=std::char_traits<char>
1>          ]
1>          d:\microsoft visual studio 11.0\vc\include\ostream(827): or       'std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,char)'
1>          with
1>          [
1>              _Elem=char,
1>              _Traits=std::char_traits<char>
1>          ]
1>          d:\microsoft visual studio 11.0\vc\include\ostream(953): or       'std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const signed char *)'
1>          with
1>          [
1>              _Elem=char,
1>              _Traits=std::char_traits<char>
1>          ]
1>          d:\microsoft visual studio 11.0\vc\include\ostream(960): or       'std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,signed char)'
1>          with
1>          [
1>              _Elem=char,
1>              _Traits=std::char_traits<char>
1>          ]
1>          d:\microsoft visual studio 11.0\vc\include\ostream(967): or       'std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const unsigned char *)'
1>          with
1>          [
1>              _Elem=char,
1>              _Traits=std::char_traits<char>
1>          ]
1>          d:\microsoft visual studio 11.0\vc\include\ostream(974): or       'std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,unsigned char)'
1>          with
1>          [
1>              _Elem=char,
1>              _Traits=std::char_traits<char>
1>          ]
1>          d:\microsoft visual studio 11.0\vc\include\ostream(984): or       'std::basic_ostream<_Elem,_Traits> &std::operator <<<char,std::char_traits<char>,std::string>(std::basic_ostream<_Elem,_Traits> &&,const _Ty &)'
1>          with
1>          [
1>              _Elem=char,
1>              _Traits=std::char_traits<char>,
1>              _Ty=std::string
1>          ]
1>          d:\microsoft visual studio 11.0\vc\include\ostream(1101): or       'std::basic_ostream<_Elem,_Traits> &std::operator <<<char,std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const std::error_code &)'
1>          with
1>          [
1>              _Elem=char,
1>              _Traits=std::char_traits<char>
1>          ]
1>          d:\microsoft visual studio 11.0\vc\include\ostream(201): or       'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::basic_ostream<_Elem,_Traits> &(__cdecl *)(std::basic_ostream<_Elem,_Traits> &))'
1>          with
1>          [
1>              _Elem=char,
1>              _Traits=std::char_traits<char>
1>          ]
1>          d:\microsoft visual studio 11.0\vc\include\ostream(207): or       'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::basic_ios<_Elem,_Traits> &(__cdecl *)(std::basic_ios<_Elem,_Traits> &))'
1>          with
1>          [
1>              _Elem=char,
1>              _Traits=std::char_traits<char>
1>          ]
1>          d:\microsoft visual studio 11.0\vc\include\ostream(214): or       'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::ios_base &(__cdecl *)(std::ios_base &))'
1>          with
1>          [
1>              _Elem=char,
1>              _Traits=std::char_traits<char>
1>          ]
1>          d:\microsoft visual studio 11.0\vc\include\ostream(221): or       'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::_Bool)'
1>          with
1>          [
1>              _Elem=char,
1>              _Traits=std::char_traits<char>
1>          ]
1>          d:\microsoft visual studio 11.0\vc\include\ostream(241): or       'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(short)'
1>          with
1>          [
1>              _Elem=char,
1>              _Traits=std::char_traits<char>
1>          ]
1>          d:\microsoft visual studio 11.0\vc\include\ostream(275): or       'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(unsigned short)'
1>          with
1>          [
1>              _Elem=char,
1>              _Traits=std::char_traits<char>
1>          ]
1>          d:\microsoft visual studio 11.0\vc\include\ostream(295): or       'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(int)'
1>          with
1>          [
1>              _Elem=char,
1>              _Traits=std::char_traits<char>
1>          ]
1>          d:\microsoft visual studio 11.0\vc\include\ostream(320): or       'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(unsigned int)'
1>          with
1>          [
1>              _Elem=char,
1>              _Traits=std::char_traits<char>
1>          ]
1>          d:\microsoft visual studio 11.0\vc\include\ostream(340): or       'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(long)'
1>          with
1>          [
1>              _Elem=char,
1>              _Traits=std::char_traits<char>
1>          ]
1>          d:\microsoft visual studio 11.0\vc\include\ostream(360): or       'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(unsigned long)'
1>          with
1>          [
1>              _Elem=char,
1>              _Traits=std::char_traits<char>
1>          ]
1>          d:\microsoft visual studio 11.0\vc\include\ostream(381): or       'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(__int64)'
1>          with
1>          [
1>              _Elem=char,
1>              _Traits=std::char_traits<char>
1>          ]
1>          d:\microsoft visual studio 11.0\vc\include\ostream(401): or       'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(unsigned __int64)'
1>          with
1>          [
1>              _Elem=char,
1>              _Traits=std::char_traits<char>
1>          ]
1>          d:\microsoft visual studio 11.0\vc\include\ostream(422): or       'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(float)'
1>          with
1>          [
1>              _Elem=char,
1>              _Traits=std::char_traits<char>
1>          ]
1>          d:\microsoft visual studio 11.0\vc\include\ostream(442): or       'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(double)'
1>          with
1>          [
1>              _Elem=char,
1>              _Traits=std::char_traits<char>
1>          ]
1>          d:\microsoft visual studio 11.0\vc\include\ostream(462): or       'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(long double)'
1>          with
1>          [
1>              _Elem=char,
1>              _Traits=std::char_traits<char>
1>          ]
1>          d:\microsoft visual studio 11.0\vc\include\ostream(482): or       'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(const void *)'
1>          with
1>          [
1>              _Elem=char,
1>              _Traits=std::char_traits<char>
1>          ]
1>          d:\microsoft visual studio 11.0\vc\include\ostream(502): or       'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::basic_streambuf<_Elem,_Traits> *)'
1>          with
1>          [
1>              _Elem=char,
1>              _Traits=std::char_traits<char>
1>          ]
1>          while trying to match the argument list '(std::ostream, std::string)'
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========


Цитата Сообщение от yoghurt92 Посмотреть сообщение
psdmaster, ну так и что?

Добавлено через 6 минут
psdmaster,

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    
    string word1("Hello "), word2("world"), word3("!");
    word1 += word2 + word3;
    for(char i = '1'; i <= '9'; ++i)
        word1 += i;
 
    cout << word1 << endl;
 
    cout << "\n\n";
    return 0;
}
0
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
02.04.2013, 21:51 #10
psdmaster, что вы вообще хотите сделать?
0
psdmaster
0 / 0 / 0
Регистрация: 05.02.2013
Сообщений: 44
02.04.2013, 22:00  [ТС] #11
Цитата Сообщение от yoghurt92 Посмотреть сообщение
psdmaster, что вы вообще хотите сделать?
путь к файлам: "txt/"
расширение файлов: ".txt"
имена: от 1 до 10

Нужно открывать файлы для работы с ними
0
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
02.04.2013, 22:20 #12
psdmaster,

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    string format;
 
    for(char i = '0'; i <= '9'; ++i)
    {
        string URL("txt/");
        URL += i + format;
        cout << URL << endl;
    }
 
    return 0;
}
а теперь делай что хочешь.

Добавлено через 6 минут
psdmaster, тут без пути, я создал несколько файлами в папке с программой, открывал, считывал и выводил на экран, как путь добавить думаю сам уже догадаешься

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    string format(".txt"), str;
 
    for(char i = '0'; i <= '2'; ++i)
    {
        string URL(way + i + format);
        
        ifstream fin(URL);
        getline(fin, str, '\n');
 
        cout << str << endl;
    }
 
    return 0;
}
1
psdmaster
0 / 0 / 0
Регистрация: 05.02.2013
Сообщений: 44
02.04.2013, 23:12  [ТС] #13
yoghurt92,

Немного изменил:
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
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    string format(".txt"), str;
 
    for(char i = '0'; i <= '2'; ++i)
    {
        string URL("txt/" + i + format);
        
        ifstream fin(URL);
        cout << URL << endl;
        
        getline(fin, str, '\n');
 
        cout << str << endl;
        fin.close();
    }
 
    getchar();
 
    return 0;
}
Выводит шляпу какую-то:
0
Миниатюры
Конкатенация строк  
psdmaster
0 / 0 / 0
Регистрация: 05.02.2013
Сообщений: 44
02.04.2013, 23:15  [ТС] #14
И что делать если файлов больше 10? в 'i' помещается только один символ.
0
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
02.04.2013, 23:33 #15
psdmaster, потому что путь должен быть латинскими буквами.

Добавлено через 2 минуты
psdmaster, и лучше придумать название файлами, а не цифры...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2013, 23:33
Привет! Вот еще темы с ответами:

конкатенация строк - 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; // длина строки, без...


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

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

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