在visual c ++中将字符串中的字符复制到另一个字符串中

时间:2012-02-01 07:17:52

标签: c++ string visual-c++ substring

我有一个char[]说str1,如何将几个字符从str1复制到另一个char[]说str2。与java一样,您通常使用String方法substring()作为String。我可以为char[]吗?

str2 = str1.substring(3,6);

CString有这样的功能吗?我可以将char[]转换为CString吗?

6 个答案:

答案 0 :(得分:2)

C ++与std::string等效String。制作一个#include<string>,然后以类似的方式使用其substr()方法。

答案 1 :(得分:2)

如果您使用的是Microsoft CString,请使用Mid方法:http://msdn.microsoft.com/en-us/library/ms928955.aspx

答案 2 :(得分:1)

是的CString确实有这样的方法。当你提到CString时,很明显你使用的是Windows和MFC。 STL中包含的std :: string可能是更好的选择,特别是对于非ANSI字符串。 Qt框架也有一个优秀的字符串类。

答案 3 :(得分:1)

您可以使用c-function strncpy

  

char * strncpy(char * destination,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);

答案 4 :(得分:0)

使用C ++的std::string而不是char的数组( C 方式),它非常通用,可以省去缓冲区溢出等问题。

这是一个快速演示,you can see running here ...

#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;
}

答案 5 :(得分:0)

对于复制字符,您也可以尝试这样....但在处理内存空间时非常小心

char str1[] = "beatiful chik",str2[5];
ZeroMemory(str2,5);
int start= 9,Length = 4;
memcpy(str2,&str1[start],sizeof(char)*Length);
AfxMessageBox(str2);