копировать символы из строки в другую в Visual C ++ - PullRequest
0 голосов
/ 01 февраля 2012

У меня есть char[] скажем str1, как мне скопировать несколько символов из str1 в другой char[] скажем str2. Как и в Java, вы обычно используете String метод substring() для String. Могу ли я сделать это для char[]?

str2 = str1.substring(3,6);

Есть ли в CString такая функция? И можно ли преобразовать char[] в CString?

Ответы [ 6 ]

2 голосов
/ 01 февраля 2012

Если вы используете Microsoft CString, используйте метод Mid: http://msdn.microsoft.com/en-us/library/ms928955.aspx

2 голосов
/ 01 февраля 2012

C ++ имеет std::string эквивалент Java String.Сделайте #include<string>, а затем используйте метод substr() аналогичным образом.

1 голос
/ 01 февраля 2012

Вы можете использовать c-функцию strncpy :

char * strncpy (char * назначение, const char * source, size_t num );

пример:

#include <string.h>
char* str1 = "this is my awesome string";
char* str2 = new char[4];
// str + 3 because you wanna copy 3 elements
// starting at index 3 (this is in fact pointer "magic")
// so: "s i" is copied into str2
str2 = strncpy(str2, str1 + 3, 3);
1 голос
/ 01 февраля 2012

Да. CString имеет такой метод.Когда вы упоминаете CString, становится ясно, что вы используете Windows и MFC.Std :: string, содержащаяся в STL, возможно, является лучшим выбором, особенно для строк, не входящих в ANSI.Фреймворк Qt также имеет отличный класс string.

0 голосов
/ 13 сентября 2015

для копий символов вы также можете попробовать вот так .... Но очень осторожно при работе с областями памяти

char str1[] = "beatiful chik",str2[5];
ZeroMemory(str2,5);
int start= 9,Length = 4;
memcpy(str2,&str1[start],sizeof(char)*Length);
AfxMessageBox(str2);
0 голосов
/ 01 февраля 2012

Использование C ++ std::string вместо массивов char (способ C ) очень универсален и избавит вас от проблем с буфером переполнения и тому подобное.

Вот краткая демонстрация, которую вы можете увидеть здесь: ...

#include <string>
#include <iostream>

int main()
{
    char str1[] = "how do I copy few chars?";

    // Create a std::string from char pointers
    std::string str2(str1 + 3, str1 + 9);
    std::cout << "str2 = '" << str2 << "'" << std::endl;

    // Create a std::string from another
    std::string str3 = str2.substr(1, 4);
    std::cout << "str3 = '" << str3 << "'" << std::endl;

    // Create a std::string from a literal
    std::string str4 = "Goodbye!";
    std::cout << "str4 = '" << str4 << "'" << std::endl;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...