2012-02-01 157 views
-1

我有一個char[]說STR1,如何從STR1複製幾個字符到另一個char[]說STR2。像Java中通常使用的方法Stringsubstring()字符串。我可以做一個char[]嗎?從字符串字符複製到另一個在Visual C++

str2 = str1.substring(3,6); 

確實CString的有這樣的功能?我可以將char[]轉換爲CString嗎?

+0

HTTP: //www.cplusplus.com/reference/clibrary/cstring/strcpy/ – 2012-02-01 07:23:19

回答

2

C++有std::string等價的Java String的。做一個#include<string>,然後使用它的方法substr()以類似的方式。

1

是CString的確實有這樣的方法。正如你提到CString,很明顯你正在使用Windows和MFC。 STL中包含的std :: string可能是更好的選擇,特別是對於非ANSI字符串。 Qt框架也有一個很好的字符串類。

1

可以使用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); 
+3

'strncpy'非常難以使用。對新手來說,一個重要的原因可能並不是很明顯,即新的char [4]零初始化數組。 – jamesdlin 2012-02-01 07:44:42

0

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

複印字符,你也可以嘗試這樣的....但非常小心,在處理內存空間

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