C++将字符串解析为具有特定类的整数

Age*_*Rev 2 c++ string parsing integer

这可能听起来很愚蠢,但我只是想知道如何在C++中将字符串解析为整数?

这是针对学校项目的,解释表说: "只允许使用iostreamstring类和system()功能;禁止使用任何其他类或功能."

我已经搜索了一下,但我发现的唯一建议是使用类atoi或者类atof.

在解析之前已经检查了输入字符串的错误,因此它总是只包含一个整数.

我不介意用条件手动解析,但我不认为这将是我老师(或任何人)的首选方式.

如果你能提供帮助,非常感谢.

R. *_*des 40

所以,你可以使用system(),呵呵?看这个工程杰作:

#include <fstream>

void download_boost() {
    system("wget http://downloads.sourceforge.net/"
           "project/boost/boost/1.47.0/boost_1_47_0.tar.bz2"
           "?r=http%3A%2F%2Fwww.boost.org%2Fusers%2Fhistory%2F"
           "version_1_47_0.html&ts=1316116936&use_mirror=kent"
           " -O boost_1_47_0.tar.bz2");
}

void unpack_boost() {
    system("tar --bzip2 -xf boost_1_47_0.tar.bz2");
}

void write_program() {
    std::ofstream os("blah.cpp");
    os << "#include \"boost/lexical_cast.hpp\"\n"
          "#include <iostream>\n"
          "#include <string>\n"
          "int main() { std::string s; std::cin >> s;"
          "int i = boost::lexical_cast<int>(s);"
          "std::cout << i; }";
}

void compile_program() {
    system("g++ -Iboost_1_47_0 blah.cpp");
}

void run_program() {
    system("./a.out");
}

int main() {
    download_boost();
    unpack_boost();
    write_program();
    compile_program();
    run_program();
}
Run Code Online (Sandbox Code Playgroud)

(我假设安装了一些常用工具的典型Linux安装.)

  • 文学思维.用文字思考. (7认同)
  • 可爱.但是,你使用了`std :: ofstream`,这是不允许的. (3认同)
  • @Rob:我认为文本含糊不清,不知道它是否允许`iostream`类,`<iostream>`标题中的类或iostream库中的类.但是,无论如何,这都是一个笑话. (2认同)
  • 在`write_program`的末尾,不应该`std :: cout >> i;```std :: cout << i;`? (2认同)