我有一个有1000个字符的字符串。我想将这个字符串拆分为一个字符串数组,每个字符串5个字符。代码是:
int main()
{
string myarray[200];
int k = 0;
string num = "a string with 1000 characters";
while(!num.empty())
{
strncpy(myarray[k],num.c_str(),5);
num.erase(0,5);
k++;
}
}
此代码给出了这个错误:
无法将'std::string{aka std::basic_string}'转换为'char*'参数'1'到'char*strncpy(char*, const char*,size_t)'|
我尝试了没有.c_str()的代码,结果是一样的。我该如何解决这个问题?谢谢。
当您将string
传递给函数strncpy时,它的第一个参数是char*
。编译器会抱怨它无法将std::string
转换为char*
:
char *strncpy( char *dest, const char *src, std::size_t count );
最好使用std::向量并调用std::字符串::substr:
#include <string>
#include <vector>
std::string num("a string with 1000 characters");
std::vector<std::string> myarray;
myarray.reserve(200);
for (int i=0; i<num.size(); i+=5)
{
myarray.push_back(num.substr(i, 5));
}
您应该使用std::substr
和std::向量
:
#include <string>
#include <vector>
std::string num = "a string with 1000 characters";
std::vector<std::string> myArray;
for ( unsigned int i = 0; i < num.length(); i += 5 )
{
myArray.push_back( num.substr( i, 5 ) );
}
std::向量
比数组
灵活一点。
一个工作的现场示例。
您可以使用std::substr
:
string MyArray[200];
for int i = 0;i<1000;i+=5)
{
MyArray[i] = num.substr(i,5);
}
我建议你使用向量