从char字符串中拉出2个数字?

时间:2010-09-13 09:28:34

标签: c++ string

我正在尝试编写一个方法来将2个变量设置为char字符串中的数字。该字符串看起来像:

[-][1][ ][ ][ ][ ][2][.][0][4]

可以提取数字-1和2.04。我知道方法签名看起来像这样:

sscanf(array[i],"%d%f",&someint,&somedouble)

但我老实说不知道如何写它。任何帮助将不胜感激

3 个答案:

答案 0 :(得分:4)

你快到了:

sscanf(array[i], "%d %lf",&someint, &somedouble)

其中空格表示“0,1或更多任何空白字符”

但是如果您使用的是C ++而不是C,那么最好从C ++流开始。这会容易得多。

#include <sstream>
std::istringstream my_number_stream(array[i]);
if (!(my_number_stream >> std::skipws >> someint >> somedouble)) {
    // oh noes ! an error !
}

答案 1 :(得分:3)

这应该可以胜任你的工作:

    int x;
    float y;
    const char* ss = "-1    2.04";
    istringstream iss(ss);
    iss >> x >> y;

答案 2 :(得分:0)

如果输入是由用户提供的,例如有人键入它,首先你应该将它标准化:将多个空格更改为一个,用空格替换制表符,用点替换逗号(有些人用逗号表示小数分隔符而不是点),剪切前导和尾随空格等等。让我们制作sscanf ()(或者你选择解析的任何东西)工作更容易。