我正在尝试编写一个方法来将2个变量设置为char字符串中的数字。该字符串看起来像:
[-][1][ ][ ][ ][ ][2][.][0][4]
可以提取数字-1和2.04。我知道方法签名看起来像这样:
sscanf(array[i],"%d%f",&someint,&somedouble)
但我老实说不知道如何写它。任何帮助将不胜感激
答案 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 ()(或者你选择解析的任何东西)工作更容易。