を使用して文字列内のすべてのトークンを取得し、strtok()
それらを整数に変換しようとしています。1 つのトークンを取得した後、すぐに別のトークンを取得しようとすると segfault が発生します。これが segfault 状態ではないことをシステムに伝えて完了できるようにするにはどうすればよいですか?
コード:
char * token;
while ( getline (file,line) )
{
char * charstarline = const_cast<char*>(line.c_str()); //cast to charstar
char * token;
token = strtok(charstarline," ");
token = strtok(charstarline," ");
int inttoken = atoi(token);
cout << "Int token: " << inttoken << endl;
while (token != NULL)
{
token = strtok (NULL, " ");
int inttoken = atoi(token);
cout << "Int token (loop): " << inttoken << endl;
}
なぜそれがセグメンテーション違反になるのですか?もしそうなら、どうすればこれを回避できますか?