C ++读取int和字符串,可能同时读取

时间:2014-01-14 04:27:02

标签: c++ string int

这里对C ++来说相当新,但对编程并不陌生。我想知道是否有任何简单的方法来获取用户输入,例如“20 kg”,“20”是用户输入的任何内容,然后kg / lb / etc再次是用户输入的内容。 问题是,我需要在计算中使用输入的整数部分。 我想要做的就是将它作为一个String读取,然后将int和string分成单独的变量。 (我将不得不同时使用数字和测量类型) 任何帮助都会很棒。

我不是在寻找任何代码块,我只想要解释我应该做什么,以及我可能需要使用的任何关键代码片段。 提前谢谢!

4 个答案:

答案 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)

首先,您必须确保输入在整数部分和度量标准部分之间有空格。那你应该

  1. 将其分为两部分和

  2. 将第一部分转换为整数。

  3. 如果您不想自己做这些繁琐的工作,可以使用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

应该适合你