2

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++;

    }

}

このコードは次のエラーを返します:

引数 '1' の 'std::string {aka std::basic_string}' を 'char*' に変換できません | 'char* strncpy(char*, const char*, size_t)'|

.c_str() なしでコードを試してみましたが、結果は同じでした。どうすればこれを修正できますか? ありがとう。

4

3 に答える 3

2

とを使用する必要がstd::substrありstd::vectorます。

#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::vectorよりも少し柔軟ですarray

実際のライブの例

于 2013-08-25T09:35:36.910 に答える