Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/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++相关的问题。 我需要制作一个程序,读取用户的体重/身高。这一切都很好,但有一个问题,我坚持下去_C++_Inches - Fatal编程技术网

C++;英尺/英寸 这是一个C++相关的问题。 我需要制作一个程序,读取用户的体重/身高。这一切都很好,但有一个问题,我坚持下去

C++;英尺/英寸 这是一个C++相关的问题。 我需要制作一个程序,读取用户的体重/身高。这一切都很好,但有一个问题,我坚持下去,c++,inches,C++,Inches,用户需要能够输入一个数字,然后输入一个测量单位。这可以是英尺/英寸、米或厘米。 我让所有这些都能工作,但用户也应该能够写一些东西,如5'和英寸是可选的。 我的问题是: 我有两个用于用户输入的变量,一个是double(高度),一个是string(unitHeight)。这对于m和cm来说很好,但是对于英尺/英寸,我需要再添加两个,因为用户需要输入两个字符串和两个数字(为了简单起见,我将其保留为双倍) 所以我用了一个if语句: if (unitHeight == "'"){ cin >

用户需要能够输入一个数字,然后输入一个测量单位。这可以是英尺/英寸、米或厘米。 我让所有这些都能工作,但用户也应该能够写一些东西,如5'和英寸是可选的。 我的问题是: 我有两个用于用户输入的变量,一个是double(高度),一个是string(unitHeight)。这对于m和cm来说很好,但是对于英尺/英寸,我需要再添加两个,因为用户需要输入两个字符串和两个数字(为了简单起见,我将其保留为双倍) 所以我用了一个if语句:

if (unitHeight == "'"){
    cin >> height2;
    cin >> unitHeight2;
}
现在唯一存在的问题是,我需要这样做,当用户输入x'(x是任何数字)时 程序不要求任何进一步的输入。 这可能是显而易见的,我可能只需要退一步,但我已经思考了一段时间,我个人无法理解


非常感谢您的帮助。

要做什么取决于高度后面可能会有什么其他输入(如果有),以及您希望如何处理错误,但要开始:

int height2 = 0;
if (unitHeight == "'" && cin >> height2)
{
    if (!(cin >> unitHeight2))
    {
        std::cerr << "hey, " << height2 << " what?  give me units baby!\n";
        exit(EXIT_FAILURE);
    }
    // if we get here, then we have height2 and unitHeight2 to work with...
    ...

}
else if (cin.eof())
{
    // might have hit EOF without inches, that could be legal - depends on your program
    ...
}
else
{
    // saw some non-numeric input when expecting height2 - is that ok?
    ...
}
int height2=0;
如果(单位高度==“'”&&cin>>高度2)
{
如果(!(cin>>单位高度2))
{

你可以这样做:

string height;
cin >> height;

for(int i = 0; i < height.size(); i++) {
    if(height[i] == "'"[0]) {
        cout << "It's ok!" << endl;
        break;
    }
}
字符串高度;
cin>>高度;
对于(int i=0;icout一次读取一行标准数据。处理每一行。如果一行包含第二个数字(表示高度)和第二个字符串(表示单位),则您有英尺+英寸规格。否则,您只有一个数字和一个单位

const int maxLength = 200;
while (true)
{
   char line[maxLength+1];
   std::cin.getline(line, maxLength);
   if ( !cin.good() )
   {
      break;
   }

   std::istringstream str(line);
   double height1;
   std::string unit1;
   double height2;
   std::string unit2;
   bool secondHeightFound = false;
   str >> height1 >> unit1 >> height2;
   if ( str.good() )
   {
      str >> unit2;
      secondHeightFound = true;
   } 
}

你应该得到整行并解析它。用一个实际的行,你可以检查接下来的两个标记是否是一个数字,“如果你在
5'
之后停下来,有人会如何输入
5'2”
?我不认为你可以直接与块。我想我没有说清楚。用户可以输入5'并按enter键,默认情况下它会接受5英尺0英寸,或者用户可以输入5'2英寸然后它会接受5英尺2英寸。它可能不是一个非常简洁的解决方案,但也许你可以使用正则表达式。等等。我是这里的C++ Noobe。如何比较单元格与<代码> >“<代码> >工作?我想<代码>”“/Cuth>”返回指针到该字符串的数据(字符)。.还是我误解了什么?我绕着各种不同类型的单位滑行的方式是我有一个双倍(高度)和一个字符串(单位高度),用户输入200厘米或1.5米或5.8英尺,然后用一种方法检查所有这些,并最终转换为米,因为这是我进一步计算所用的。用户还可以输入5'7“例如,我这样做的话,我用一个IF解释,如果是UnTeTHEE,那么它允许另一个双输入,另一个字符串输入是英寸和双引号。我只需要知道如何让用户不需要输入英寸。@ BWG:在C++中,<代码> STD::String < /Cord>变量可以直观地比较。(也就是说,
=
!=
@user3192656:“我只需要弄清楚如何让用户不需要输入英寸。”-这就是
&&cin>>height2
所做的…确定他们是否指定了另一个数字,如果没有-不用担心,这取决于
其他
子句中的一个…@TonyD嗯。模板和重载。乱七八糟的东西。我认为短语“你认为你知道的一切都是错的”适用于我这里。你能重载类型转换吗?你能重载运算符的优先级吗?你能重载事物的升级吗?为什么?据我所知,我不需要它。这段代码将标识你什么时候会有一个“”。所以,你会知道在它之后,你会有英寸(忘记那个“break;”)。感谢您的输入,但我不需要for循环。我知道输入将是double,string,double,string(它们实际上只是int,但我将它们保留为double,用于以后需要的计算,我不想进行类型转换)。我遇到的问题是,用户需要能够执行5'7“或者只需5'并按enter键,就不会要求输入英寸值