c ++如何将大字符串放入固定的char数组中

时间:2015-07-19 02:30:04

标签: c++ string char

嘿,我有一个非常长的字符串,我试图将它粘在一个固定大小的字符数组中。我不在乎字符串是否被切断,我只是希望char数组的每个元素都有一些东西。

例如

char first_ten_alaphabet[10];
string str = "abcdefghijklnopqrstuvwxyz";


strcpy(first_ten_alaphabet, str.c_str());  //<-- this will cause program to break

任何帮助都会很好,谢谢

2 个答案:

答案 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);