前提・実現したいこと
C++の初心者です。
txtファイルを一行ずつ読み込んで,一行それぞれ文字列配列に格納していくシステムが作りたいです。
発生している問題・エラーメッセージ
txtファイルの一行だけ表示した後に
Line:1455
Expression:vector subscript out of range
For information on how your program can cause an assertion failure,see the Visual C++ documentation on asserts.
というエラーが表示されます。
該当のソースコード
C++
1#include <fstream> 2#include <iostream> 3#include <string> 4#include <vector> 5 6int main(int argc, char* argv[]) { 7 8 //コマンドライン引数のチェック 9 if (argc != 2) { 10 std::cerr << "引数の数が間違っています" << std::endl; 11 return 1; 12 } 13 14 //ファイル読み込み 15 std::ifstream file(argv[1], std::ios::in); 16 17 if (!file) { 18 std::cerr << "エラー:ファイルが開けません" << std::endl; 19 return 1; 20 } 21 22 std::vector<std::string> strList; //文字列配列 23 std::string line; 24 int i = 0; 25 while (std::getline(file, line)) { //getlineで一行ずつ読み込む 26 std::vector<std::string> strList = { line }; 27 std::cout << strList[i] << std::endl; 28 i++; 29 } 30 31 return 0; 32}
試したこと
std::vectorについて調べてみて,std::vector<int> data{3, 1, 4, 1, 5, 9, 2, 6, 5, 3};とやると値をそれぞれ参照することができましたが,一行を格納している「line」ではエラーが発生します。
補足情報(FW/ツールのバージョンなど)
開発環境 VisualStudio2019
言語 C++
回答3件
あなたの回答
tips
プレビュー