私は現在、 "可変関数"をダウンし、文字列ベクトルに4つの名前をロードしてからそれらを出力しようとしています。私は 'int'型でこれを行い、数値を使用するとうまくいきますが、文字列ベクトルを使用するとエラーが発生します。"ベクトル下付き文字を範囲外にする"エラー
1
A
答えて
3
C++では、可変引数として簡単にコピー可能な型のみを使用できます。 std::string
はNULL終了バッファを指すポインタchar*
から構築可能であるため、std::string
タイプの代わりにchar*
を使用できます。ちょうどあなたのコード内の
currentElement = va_arg(namesList, char*);
で
currentElement = va_arg(namesList, string);
を交換してください。この制限を解消するには、使用する任意のタイプのコンパイル時にコードを生成するvariadic templatesを検討してください。
コードにはランタイムエラーも含まれています。これは:
namesVector[i] = currentElement;
は、ベクターにメモリを割り当てなかったため、プログラムがクラッシュする可能性が非常に高いです。ベクトルは実際には動的配列なので、適切なコンストラクタにsize引数を渡すか、ベクトル上でresize
を呼び出す必要があります。あなたはケースで、あなたはそれのどちらを行うが、ちょうどpush_back method
を使用することができます:あなたのコードをステップ実行するためにデバッガを使用する方法を学ぶ必要があるかもしれないよう
namesVector.push_back(currentElement);
+0
ありがとう!それはそれを修正し、説明に感謝します! – JSan782
関連する問題
- 1. 範囲外のベクトル下付き文字エラー、C++、バブルソート
- 2. 範囲外のベクトル下付き文字 - 構造体のベクトル
- 3. CppUnitTestFrameworkと「範囲外のベクトル下付き文字」のテスト
- 4. 下付き文字の範囲外
- 5. ランタイムエラー '9'下付き文字範囲外
- 6. Crystal Reportsエラー - 下付き文字が範囲外にある
- 7. 下付き文字がエラー範囲外です。800A0009
- 8. Word/Excel Vba vlookup「下付き文字が範囲外です」エラー
- 9. "文字列下付き文字を範囲外に"受け取るエラー
- 10. 下付き文字が範囲外のエラー9 vba
- 11. * tmp * [[j]]のエラー:下付き文字の範囲外
- 12. 下付き文字の範囲外の-Rエラー
- 13. ランタイムエラー '9'、下付き文字範囲外エラー
- 14. 下付き文字の範囲外のエラー
- 15. C++文字列下付き文字範囲外
- 16. エラーが発生する "下付き文字範囲外のエラー" aspの古典
- 17. 最小値、下付き文字の範囲外エラーを確認する
- 18. '下付き文字が範囲外です。' in period.apply
- 19. Rの素朴なベイズエラー:下付き文字の範囲外
- 20. Runtime Erro "9"下付き文字範囲外
- 21. vba - ランタイムエラー '9':下付き文字範囲外
- 22. Rのデータマッシュアップ:「範囲外の下付き文字」
- 23. VBAランタイムエラー9 - 下付き文字範囲外
- 24. ランタイムエラーが発生する9 - 下付き文字が範囲外にある
- 25. セルを参照するときに下付き文字が範囲外になるエラー
- 26. R naiveBayesクラシファイアが「範囲外の下付き文字」を予測する
- 27. R reslist $の件数[[1]]:下付き文字が範囲外にある
- 28. ブック間のコピー/貼り付け(下付き文字が範囲外)
- 29. 範囲外のベクトル添え字エラー - C++ベクトル&オープンCV
- 30. VBA:複数のキー付きコレクションの再調整=エラー9 '下付き文字が範囲外です。'
ですね。良いデバッガを使用すると、プログラムを1行ずつ実行し、どこからずれているかを確認することができます。これはプログラミングをする場合に不可欠なツールです。詳しい読書:** [小さなプログラムをデバッグする方法](http://ericlippert.com/2014/03/05/how-to-debug-small-programs/)** –
あなたは時間を過ごすことをお勧めします'std :: vector'がどのように動作するか(http://en.cppreference.com/w/cpp/container/vector)。 – caps