我有一个char[]
说str1,如何将几个字符从str1复制到另一个char[]
说str2。与java一样,您通常使用String
方法substring()
作为String。我可以为char[]
吗?
str2 = str1.substring(3,6);
CString有这样的功能吗?我可以将char[]
转换为CString
吗?
答案 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);