在visualc++中,将字符从一个字符串复制到另一个字符串中

copy chars from a string into another in visual c++

本文关键字:字符串 一个 另一个 复制 visualc++ 字符      更新时间:2023-10-16

我有一个char[],比如str1,我如何将几个字符从str1复制到另一个char[],比如str2。像在java中一样,您通常使用String方法substring()作为String。我能为char[]做这件事吗?

str2 = str1.substring(3,6);

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

C++具有等效于Java Stringstd::string。制作一个#include<string>,然后以类似的方式使用其substr()方法。

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

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

您可以使用c函数strncpy:

char*strncpy(char*目标,const char*源,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);

使用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;
}

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

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