このコードを実行すると、メモリの問題が発生します。
#include <iomanip>
#include <string>
#include <iostream>
#include <vector>
using namespace std;
int main(){
vector<string> tokens;
int x,y;
string toParse = "word,more words,an int 5,some more,this is the 5th one,thisll be 6,seven,eight,nine,tenth,extra";
for(y=0; y<10; y++){
cout << "in for loop " << y << endl;
x = toParse.find(",");
tokens[y]= toParse.substr(0,x);
toParse = toParse.substr(x+1);
}
for(y=0; y<9; y++)
cout << tokens[y] << endl;
}
基本的に、コンマに応じて区切られた値を保存したいだけです。
x はカンマの位置に設定する必要があり、カンマまでの情報を保存します。次に、substr を使用してビットを取得する新しい文字列を取得し、カンマの後の行全体を取得します。セグメンテーション違反が発生します。