嘿,我有一个非常长的字符串,我试图将它粘在一个固定大小的字符数组中。我不在乎字符串是否被切断,我只是希望char数组的每个元素都有一些东西。
例如
char first_ten_alaphabet[10];
string str = "abcdefghijklnopqrstuvwxyz";
strcpy(first_ten_alaphabet, str.c_str()); //<-- this will cause program to break
任何帮助都会很好,谢谢
答案 0 :(得分:3)
如果你想复制(并可能截断)一个C风格的字符串,那么我会使用strncpy而不是&#34; strcpy()&#34;。
strncpy()的一个限制是,如果#/字符完全等于复制长度,它将不空终止字符串。这是设计,但它是一个潜在的&#34;陷阱&#34;如果你不期待它。只需添加第二个语句,将NULL字符放在最终位置:
char first_ten_alphabet[10];
string str = "abcdefghijklnopqrstuvwxyz";
strncpy(first_ten_alphabet, str.c_str(), sizeof(first_ten_alphabet));
first_ten_alphabet[sizeof(first_ten_alphabet)-1] = '\0';
答案 1 :(得分:1)
使用标准:复制,http://www.cplusplus.com/reference/algorithm/copy/ copy(str.begin(),str.begin()+sizeof(first_ten_alaphabet),first_ten_alaphabet);