我有一個char[]
說STR1,如何從STR1複製幾個字符到另一個char[]
說STR2。像Java中通常使用的方法String
爲substring()
字符串。我可以做一個char[]
嗎?從字符串字符複製到另一個在Visual C++
str2 = str1.substring(3,6);
確實CString的有這樣的功能?我可以將char[]
轉換爲CString
嗎?
我有一個char[]
說STR1,如何從STR1複製幾個字符到另一個char[]
說STR2。像Java中通常使用的方法String
爲substring()
字符串。我可以做一個char[]
嗎?從字符串字符複製到另一個在Visual C++
str2 = str1.substring(3,6);
確實CString的有這樣的功能?我可以將char[]
轉換爲CString
嗎?
C++有std::string
等價的Java String
的。做一個#include<string>
,然後使用它的方法substr()
以類似的方式。
如果您使用的是微軟的CString,使用Mid方法:http://msdn.microsoft.com/en-us/library/ms928955.aspx
是CString的確實有這樣的方法。正如你提到CString,很明顯你正在使用Windows和MFC。 STL中包含的std :: string可能是更好的選擇,特別是對於非ANSI字符串。 Qt框架也有一個很好的字符串類。
可以使用C-功能strncpy:
字符*函數strncpy(字符*目的地,爲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);
'strncpy'非常難以使用。對新手來說,一個重要的原因可能並不是很明顯,即新的char [4]零初始化數組。 – jamesdlin 2012-02-01 07:44:42
使用C++的std::string
而不是char
(在Ç方式)陣列,它的用途很廣,將節省您的緩衝區溢出之類的擔心。
這裏有一個快速演示,這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;
}
複印字符,你也可以嘗試這樣的....但非常小心,在處理內存空間
char str1[] = "beatiful chik",str2[5];
ZeroMemory(str2,5);
int start= 9,Length = 4;
memcpy(str2,&str1[start],sizeof(char)*Length);
AfxMessageBox(str2);
HTTP: //www.cplusplus.com/reference/clibrary/cstring/strcpy/ – 2012-02-01 07:23:19