2

ここに詳述されているように、私は多くの方法を試しました: http://www.cplusplus.com/forum/general/13135/

Windows でファイルを実行すると、ほとんどのファイルが機能しますが、LINUX で実行しようとすると、どれも機能しません。たとえば、私はやろうとしています:

  string str = "123";
  int sp;
  istringstream ( str ) >> sp;

しかし、それは私にエラーを与えます:「不完全な型 'struct std::istringstream' /usr/include/c++/4.4/iosfwd:67 の無効な使用: エラー: 'struct std::istringstream' の宣言」"

別のオプションは「atoi」でしたが、「atoi はこのスコープでは定義されていませんでした」と表示されます。

なぜそれが起こっているのですか?

4

2 に答える 2

5

#include <cstdlib>atoi()関数については、cstdlib( )ヘッダーを含める必要があります。

次に、次のように使用できます。

string str= "123"; 
int sp = atoi(str.c_str());

文字列オブジェクトに、Cスタイルの文字列(ターミネータがゼロの文字列\ 0として最もよく知られている)を指すconstchar*として機能するように指示します。

于 2012-11-12T15:21:32.023 に答える
3

std::string秘密にintするPOSIXの方法はatoi()

#include <cstdlib>
...
string str = "123";
int sp = atoi( str.c_str() );

intだけでなく多くのタイプに変換したい場合は、を使用することをお勧めしますstringstream。ただし、コンパイル時間が長くなることに注意してください。

于 2012-11-12T15:23:30.310 に答える