0

膨大な数の文字列を読まなければならないstdinので、時間は重要な問題です。文字列は連続した行にあり、スペースがないため、単純に使用できます while(cin>>str) { //code }が、これは非常に遅いです。scanf は cin よりもはるかに高速であると聞いたことがありますが、使用する scanf("%s,str)と、str はchar*C++ ではなく C++ として扱われると思われるstringため、STL を使用できません。入力を char* として取得し、すべての文字を C++ 文字列にコピーできますが、IMO も遅くなります。

scanf などを使用して入力を取得する方法はありますが、結果として C++ 文字列を取得する方法はありますか?

4

3 に答える 3

1

テキストの平均サイズまたは最大サイズがわかっている場合はstd::string、事前に割り当てられたサイズで作成します。多くの時間を占める領域の 1 つは、 によるメモリ (再) 割り当てstd::stringです。

于 2013-07-01T20:19:53.380 に答える
0

cin >> strは、STL で見つかる最も近いものですscanf("%s, str")。唯一の理由scanfは、文字列cinの代わりに を与えるためです。コンストラクタに渡すだけでchar*から新しい文字列を作成できますが、それは を使用するのとほぼ同じです。char*string()cin >> str

于 2013-07-01T19:36:56.323 に答える