2

例えば:

int input;
cout << "Please enter how many burgers you'd like" << endl;
cin >> input;

「入力」を短縮し、最初の 2ビットの数字のみを受け入れる最も簡単な方法は何でしょうか。例を続けるには:

ユーザー入力: 432534。入力値: 43。

ユーザーは次のように入力します: 12342342341234123412341235450596459863045896045。入力値: 12。

(編集:「ビット」ではなく「数字」と言うために)

4

8 に答える 8

5

std::string手術で帰宅できると思います。

std::string inputstr;
cout << "Please enter how many burgers you'd like" << endl;
cin >> inputstr;
inputstr = inputstr.substr(0, 2);

int input    
input = std::stoi(inputstr);      // C++11
input = atoi(inputstr.cstr());    // pre-C++11

ドキュメント:
http://en.cppreference.com/w/cpp/string/basic_string/stol
http://en.cppreference.com/w/cpp/string/byte/atoi

于 2013-10-15T16:09:05.047 に答える
1

誰も言及していないことに驚いていfscanfます。C++ の純粋主義者は反対するかもしれませんが、これには、この場合よりもかなり少ないコード (および大幅に優れたエラー チェック) が必要cinです。

int res = 0;
std::cout << "Please enter how many burgers you'd like" << std::endl;
if (fscanf(stdin, "%02d", &res) != 1) {
    std::cerr << "Invalid Input" << std::endl;
}
int c;
do {
    c = fgetc(stdin);
} while (c != '\n' && c != EOF);
std::cout << "Got " << res << std::endl;
于 2013-10-15T16:39:31.497 に答える
0

文字列として受け取りinput、最初の2文字を次のように変換しますint

#include <sstream>
#include <string>
#include<iostream>

int main()
{
   std::string input ;

   std::cin>>input;
   std::stringstream iss(input.substr(0,2));
   int num;

   iss >> num;

   std::cout<<num;

}
于 2013-10-15T16:06:19.537 に答える
0
int i;
cin >> i;
while (i >= 100 || i <= -100) {
   i = i / 10;  // remove and ignore the last digit
}

整数のオーバーフローのため、これは非常に大きな数では機能しません。これを非常に単純なアルゴリズムとして含めているだけです。

于 2013-10-15T16:10:40.237 に答える
0

この方法はわかりやすいと思います。

int input;
cout << "Please enter how many burgers you'd like" << endl;
cin >> input;

char cTemp[50];

itoa(input, cTemp, 10);

char cResult[3] = {cTemp[0], cTemp[1], '\0'};

int output = atoi(cResult);
于 2013-10-15T16:16:22.190 に答える
-3

あなたのために書き直して質問に答えさせてください:

標準入力から文字列を読み取り、最初の 2 文字を標準出力に書き込むにはどうすればよいですか?

于 2013-10-15T16:11:47.973 に答える