該作業(yè)來自中國mooc《c++程序設(shè)計(面向?qū)ο筮M階)》(北京郵電大學(xué)颈嚼,崔毅東)
用戶從鍵盤輸入形式如 12-45 這樣的“數(shù)值范圍”字符串,代表從12到45這個范圍饭寺。
請你編寫一個類 Parse阻课,可以解析這個字符串。然后提供兩個函數(shù)艰匙,能夠獲取字符串中的第一個整數(shù)和第二個整數(shù)限煞。(10分)
題目內(nèi)容:
Parse類要提供一個有參構(gòu)造函數(shù),接收一個字符串參數(shù)旬薯;
Parse類要提供一個 int getFirst() 函數(shù)晰骑,返回“數(shù)值范圍”字符串中的前面的整數(shù)适秩;
Parse類要提供一個 int getLast() 函數(shù)绊序,返回“數(shù)值范圍”字符串中的后面的整數(shù);
程序的主函數(shù)如下秽荞,請將主函數(shù)代碼拷貝到你的開發(fā)環(huán)境中骤公,但是不要修改主函數(shù)內(nèi)部的代碼:
#include <iostream>
#include <string>
int main() {
std::string s{};
std::cin >> s; // 用戶輸入一個范圍字符串
Parse p(s); // 構(gòu)造Parse對象p,同時解析字符串 s
std::cout << p.getFirst() << ' ' << p.getLast(); // 中間是兩個單引號括起來的一個空格字符
return 0;
}
要求:
不要使用C語言的字符串處理函數(shù)
使用string類自帶的函數(shù)扬跋,或者標準庫中的函數(shù)
提示:
在string中找'-'字符阶捆,可以使用string類中的find函數(shù),或者find_first_of()函數(shù)。find_first_of()的說明:https://zh.cppreference.com/w/cpp/string/basic_string/find_first_of
當然洒试,你也可以用 find_last_of()或者rfind()函數(shù)倍奢。find_last_of()的說明:https://zh.cppreference.com/w/cpp/string/basic_string/find_last_of;rfind()的說明:https://zh.cppreference.com/w/cpp/string/basic_string/rfind
將字符串的一部分提取出來垒棋,需要使用 substr() 成員函數(shù)卒煞。substr()的說明:https://zh.cppreference.com/w/cpp/string/basic_string/substr
將字符串轉(zhuǎn)換為整數(shù),可以使用標準庫的 std::stoi() 函數(shù)叼架。std::stoi的說明:https://zh.cppreference.com/w/cpp/string/basic_string/stol
輸入格式:
用英文連字符分隔的兩個整數(shù)構(gòu)成的字符串
輸出格式:
兩個整數(shù)畔裕,中間用1個空格分隔。第二個整數(shù)后面沒有空格或者換行
輸入樣例:
12345-54321
輸出樣例:
12345 54321
我的答案如下:
#include <iostream>
#include <string>
class Parse {
private:
std::string str;
public:
Parse(std::string s);
int getFirst();
int getLast();
~Parse();
};
Parse::Parse(std::string s) {
str = s;
}
Parse::~Parse(){
}
int Parse::getFirst() {
int a=str.find("-");//string類的方法乖订,返回參數(shù)的位置
std::string b = str.substr(0, a);//string類的方法扮饶,復(fù)制從0到a的一段字符串
int res = std::stoi(b);//將字符串轉(zhuǎn)換成整數(shù)。
return res;
}
int Parse::getLast(){
int a = str.find("-");
std::string b = str.substr(a+1);
int res = std::stoi(b);
return res;
}
int main() {
std::string s{};
std::cin >> s; // 用戶輸入一個范圍字符串
Parse p(s); // 構(gòu)造Parse對象p乍构,同時解析字符串 s
std::cout << p.getFirst() << ' ' << p.getLast(); // 中間是兩個單引號括起來的一個空格字符
return 0;
}