私は今、私はこの関数を呼び出していたから、別のクラスを、この機能を持っている1つのCSVReaderクラス、なぜUtf8Charのベクトルの値が変化していますか?私はいくつかのセットで<code>localVec</code>の値を比較しています</p>ここ <pre><code>FILE *fp; fp = fopen("SampleFile.csv", "r"); while((getc(fp)) != EOF) { bvector<Utf8Char*> localVec = csvFile.ReadFile(fp); } </code></pre> <p>:
vector<UtfChar*> CSVFile::ReadFile(FILE* fp)
{
//int count = 0;
Utf8Char buff[256];
fgets(buff, 256, (FILE*)fp);
// count++;
Utf8Char *token = strtok(buff, ",");
bvector<UtfChar*> localVec;
while (token != NULL)
{
localVec.push_back(token);
token = strtok(NULL, ",");
}
return localVec;
}
を持っています値の(char*
)私は持っています。しかし、この他のクラスでは、localVec[0]
やl ocalVec[1]
のようなベクトルにアクセスしようとすると、それはゴミを与えています。 私はCSVReaderクラス自体で比較を試みた後、そこで動作しています。しかし、私は他のクラスで比較を行う必要があるので、他のCSVファイルに対して同じCSVReaderクラスを使用することができます。
ポインタとC関数。何がうまくいかない? 1つのバッファを使用しているため、すべてのベクトル要素がそれを参照してから破棄されます。 C++標準ライブラリを使用してください。 – LogicStuff
「ごみ」とはどのようなものですか? Utf8Charはどのように定義されていますか? – user3684240
@LogicStuffプログラマーがローカル変数の範囲や単純なポインタの扱い方を習得できない場合、C++標準ライブラリを使用することは役に立ちません。 –