这里对C ++来说相当新,但对编程并不陌生。我想知道是否有任何简单的方法来获取用户输入,例如“20 kg”,“20”是用户输入的任何内容,然后kg / lb / etc再次是用户输入的内容。 问题是,我需要在计算中使用输入的整数部分。 我想要做的就是将它作为一个String读取,然后将int和string分成单独的变量。 (我将不得不同时使用数字和测量类型) 任何帮助都会很棒。
我不是在寻找任何代码块,我只想要解释我应该做什么,以及我可能需要使用的任何关键代码片段。 提前谢谢!
答案 0 :(得分:2)
std::istream
(特别是operator >>()
)可以轻松应对这种情况:
int weight;
std::string units;
std::cout << "Guess the weight of the cake: ";
if (std::cin >> weight >> units)
{
std::cout << weight << units << "? Spot on!" << std::endl;
}
else
{
std::cerr << "Expected a numeric weight and alphabetic units (e.g: 42 kg)."
<< std::endl;
}
答案 1 :(得分:1)
使用pair<int, string>
作为一个整体考虑它们,之后很容易处理。
pair<int, string> val;
if (cin >> val.first >> val.second)
// read input sucessfully, e.g. val will be {20, "kg"}
else
cerr << "unable to input weight and units\n"
在此之后,无论何时您想要计算,只需使用val.first
。并使用val.second
进行测量。
PS :如果您需要处理pair<float, string>
个号码,可以使用float
。
答案 2 :(得分:0)
首先,您必须确保输入在整数部分和度量标准部分之间有空格。那你应该
将其分为两部分和
将第一部分转换为整数。
如果您不想自己做这些繁琐的工作,可以使用ssstream
。以下是一个简短的样本。
#include<string.h>
#include<iostream>
#include<sstream>
using namespace std;
int main()
{
string input("20 kg");
istringstream stream(input);
int n;
string metric;
stream >> n;
stream >> metric;
//do something you want here
cout<<n<<" "<<metric;
return 0;
}
答案 3 :(得分:0)
我的想法是让用户以字符串形式输入整个内容,然后您可以使用substr方法将字符串拆分为数字部分,然后是测量部分。 然后你必须将数字部分转换为整数。
例如
string str = "20 lb";
string delimiter = " "; //space
string number = str.substr(0, str.find(delimiter)); // this will get you the number
string measurement = str.substring(str.find(delimiter)+1, str.length()) //this will get you the measurement
//convert the number string now
应该适合你