0

これは、文配列文字列を印刷する基本的なものです。私は c++ を初めて使用し、JAVA のみを使用し、同様の言語はこれまで c を使用したことがありません。さまざまなソートアルゴリズムとデータ構造をすべて試して学習しようとしています。

しかし、始める前に文字列配列をテストすると、エラーが発生します。なぜエラーが発生するのかわかりません。実際には正常にコンパイルされ、意図したコンテンツが実行および出力されますが、デバッグしている場合はエラーでクラッシュします。それがなぜなのか、誰か説明してくれませんか。C++ ライブラリから試しsize()てみlength()ましたが、sizeof() を使用する必要がありました '

//BubbleSort.cpp
#include "stdafx.h"
#include <string>
#include <iostream>
using namespace std;

int main()
{
    string something[14];
    something[0] = "Kate";
    something[1] = "likes";
    something[2] = "lots";
    something[3] = "of";
    something[4] = "cake";
    something[5] = "in";
    something[6] = "her";
    something[7] = "mouth";
    something[8] = "and";
    something[9] = "will";
    something[10] = "pay";
    something[11] = "a";
    something[12] = "lot";
    something[13] = "lol";
    int some = sizeof(something);
    some--;
    for (int i = 0; i < some; i++)
    {
        cout << something[i] << " " ;
    }
    system("pause");
    return 0;
}
4

1 に答える 1

8

sizeof(something)期待どおりに 14 は返されませんが、返さsizeof(string)*14れるため、印刷しようとするとバッファ オーバーフローが発生します。必要なのは

some = sizeof(something)/sizeof(string) 

または@Tiagoで言及されているように、使用できます

some = sizeof(something)/sizeof(something[0])

Also as @James suggested you should look into std:vector .

于 2012-05-11T04:22:14.110 に答える