プロジェクトを見て、次のコードを見つけて、sprintfが何をしているのか理解できず、誰かが私を助けてくれることを望んでいたそれを理解する。問題「char * str + int」のsprintfを理解する
char storage[64];
int loc = 0;
int size = 35;
sprintf(storage+(loc),"A"); //Don't know what this does
loc+=1;
sprintf(storage+(loc),"%i", size); //Don't know what this does
loc+=4;
sprintf(storage+(loc), "%i", start); //Don't know what this does
start += size;
loc += 3;
コードは、後にはsprintfに関する私がオンラインに見てきた別の部分では、次の
string value;
int actVal;
int index = 0;
for(int j = index+1; j < index+4; j++)
{
value += storage[j];
}
istringstream iss;
iss.str(value);
iss >> actVal; //Don't understand how this now contains size
例は、上記のコードは可能であったことをカバーしたことがないんが、プログラムはうまく実行されます。私は "+ loc"がこのインスタンスのストレージにどのような影響を与え、どのように値を保存/保存するかを理解することはできません。どんな助けもありがとう。
短い答えは任意のポインタに整数を加えたもので、その多くの要素を進めたポインタを返します。基本的にsprintfに 'loc'空間をバッファに印字するように指示します。 – vu1p3n0x
同じコードベースが 'ostringstream'ではなく' istringstream'を使用しているので、 'sprintf'を使用する必要はありません。 – PaulMcKenzie
'sprintf'はCライブラリ関数です。バッファオーバーフローの機会を複数作成する点を除いて、現代のC++コードではほとんど使用されていません。終わりのないバグの源泉以外の目的はほとんどありません。 –