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

至于 atoi() 函数,您需要包含 cstdlib ( #include <cstdlib>) 标头。

那么你可以像这样使用它:

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

它将告诉字符串对象充当指向 C 风格字符串的 const char* (最有可能被称为带有零终止符 \0 的字符串)。

于 2012-11-12T15:21:32.023 回答
3

POSIX 的隐蔽std::string方式int将是atoi()

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

如果您不仅要转换int为多种类型,而且要转换为多种类型,最好使用stringstream. 但是,请注意增加的编译时间。

于 2012-11-12T15:23:30.310 回答