提问者:小点点

在C中将字符串划分为较小的字符串


我有一个有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()的代码,结果是一样的。我该如何解决这个问题?谢谢。


共3个答案

匿名用户

当您将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::substrstd::向量

#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);
}

我建议你使用向量

相关问题