こんにちは、このコードを書いて、テキストファイルを調べて、Cの文字列配列にある各単語を配置します。コードを書くことができましたが、実際のテキストファイルに間違いがあると問題が発生します。私のプログラムは、 "車が速く行く"のような文章に二重のスペースがあるとクラッシュするでしょう。それは車で止まるでしょう。私のコードを見て、私はこれがstrtokのためだと信じています。私は、次の値のトークンを作るstrtokは確認する必要があり、問題を解決すると思いますが、私が何をどのように確認していないので、strtokコンパイラエラーを修正するには?
私のコード
#include <iostream>
#include <fstream>
#include <string.h>
#include <stdlib.h>
using namespace std;
int main() {
ifstream file;
file.open("text.txt");
string line;
char * wordList[10000];
int x=0;
while (getline(file,line)){
// initialize a sentence
char *sentence = (char*) malloc(sizeof(char)*line.length());
strcpy(sentence,line.c_str());
// intialize a pointer
char* word;
// this gives us a pointer to the first instance of a space, comma, etc.,
// that is, the characters in "sentence" will be read into "word"
// until it reaches one of the token characters (space, comma, etc.)
word = strtok(sentence, " ,!;:.?");
// now we can utilize a while loop, so every time the sentence comes to a new
// token character, it stops, and "word" will equal the characters from the last
// token character to the new character, giving you each word in the sentence
while (NULL != word){
wordList[x]=word;
printf("%s\n", wordList[x]);
x++;
word = strtok(NULL," ,!;:.?");
}
}
printf("done");
return 0;
}
私は++のコードの一部はCである知っているし、いくつかはcですが、私はそれを最大限に活用しようとしています
教授は、C++とcとを組み合わせていますが、cクラスであるはずです。だから私は本当に今はC++についてはあまりよくありません。 – alex
@alex、あなたの教授があなたが使っているものに気をつけなければ、可能な限り多くのことに固執してください。 –
は、私は実際に読むことを想定されたファイルをテストし、問題が値それは、ダブルスペースのような連続した順序でヌル尻に回すことになったり二つの言葉は、それらの間でのみの期間を持っているときには、故障しているです。 – alex