Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将特定格式的字符串拆分为浮点数和字符串_C++_String_Stringstream - Fatal编程技术网

C++ 将特定格式的字符串拆分为浮点数和字符串

C++ 将特定格式的字符串拆分为浮点数和字符串,c++,string,stringstream,C++,String,Stringstream,我有一个项目,其中的输入是一种特定的格式,需要从中提取数据 格式类似于H79.03=J99.30,我需要获取浮动 如何仅使用std::stringstream和std::string实现此目的的最佳方法?是的,您只能使用stringstream和string。首先,用空格替换无效数字。然后记下数字 string originalStr = "H79.03 = J99.30"; string expression = originalStr; for(int i = 0; i < expre

我有一个项目,其中的输入是一种特定的格式,需要从中提取数据

格式类似于
H79.03=J99.30
,我需要获取浮动


如何仅使用
std::stringstream
std::string
实现此目的的最佳方法?

是的,您只能使用stringstream和string。首先,用空格替换无效数字。然后记下数字

string originalStr = "H79.03 = J99.30";
string expression = originalStr;
for(int i = 0; i < expression.length(); i++) {
    if (!isdigit(expression[i]) && (expression[i] != '.'))
         expression[i] = ' ';
}
stringstream str(expression);
float firstValue, secondValue;
str >> firstValue;
str >> secondValue;

cout<<firstValue<<endl; // it prints 79.03
cout<<secondValue<<endl; // it prints 99.30
string originalStr=“H79.03=J99.30”;
字符串表达式=originalStr;
for(int i=0;i>第一值;
str>>第二值;

cout是的,您只能使用stringstream和string。首先,用空格替换无效数字。然后记下数字

string originalStr = "H79.03 = J99.30";
string expression = originalStr;
for(int i = 0; i < expression.length(); i++) {
    if (!isdigit(expression[i]) && (expression[i] != '.'))
         expression[i] = ' ';
}
stringstream str(expression);
float firstValue, secondValue;
str >> firstValue;
str >> secondValue;

cout<<firstValue<<endl; // it prints 79.03
cout<<secondValue<<endl; // it prints 99.30
string originalStr=“H79.03=J99.30”;
字符串表达式=originalStr;
for(int i=0;i>第一值;
str>>第二值;
库特


到目前为止,您尝试了什么?发布你的代码。到目前为止你尝试了什么?发布您的代码。您的循环正在替换浮点数的小数点。不要将它们转换为空格。和
firstValue
secondValue
需要声明为
float
double
而不是
int
谢谢@RemyLebeau的建议。您仍在丢弃小数点
isdigit()
”返回false。
。您需要改为使用此选项:
如果(!isdigit(表达式[i])&&(表达式[i]!=”)
您的循环正在替换浮点的小数点。不要将它们转换为空格。和
firstValue
secondValue
需要声明为
float
double
而不是
int
谢谢@RemyLebeau的建议。您仍在丢弃小数点
isdigit()
”返回false。
。您需要改为使用它:
if(!isdigit(表达式[i])&(表达式[i]!=”)