該陣列必須由用戶輸入,而不是在應用程式本身中指定。
char coeff[20];
char expo[20];
for (int i = 0; i < Size; i ) {
cin >> coeff[i];
cin >> expo[i];
}
當我在 中輸入一個數字時cin >> coeff[i],它不允許我輸入多個數字,有沒有辦法輸入多個數字并仍然保存在變數中?
PS。我被迫在這里使用字符陣列而不是整數
uj5u.com熱心網友回復:
我認為您的教授希望您閱讀文本,然后將該文本轉換為數字。這是一個愚蠢的要求。
明智的程式會直接>>進入ints
int coeff;
int expo;
std::cin >> coeff >> expo;
要安全地將其讀入中間文本,您可以
std::string coeff_s;
std::string expo_s;
std::cin >> coeff_s >> expo_s;
int coeff = std::stoi(coeff_s);
int expo = std::stoi(expo_s);
但是我預測您的教授會堅持使用 rawchar[]而不是std::string. 您必須更加小心(在 C 20 之前),指定char[].
char coeff_s[20];
char expo_s[20];
std::cin >> std::setw(20) >> coeff_s >> std::setw(20) >> expo_s;
int coeff = std::atoi(coeff_s);
int expo = std::atoi(expo_s);
uj5u.com熱心網友回復:
您將其存盤在 char 陣列中。coeff將和的型別更改為expo正確的。例如:int coeff[20]如果您希望存盤 20 個整數。
uj5u.com熱心網友回復:
這在技術上是可行的,但有局限性。在 C char中,大小通常是 1 個位元組(檢查第一個注釋),而int大小是 4 個位元組,因此您可以存盤在 achar中的最大值是最大值255(檢查第一個注釋),因為255它是僅用 1 個位元組可以表示的最大數字。
因此,在for回圈中,您可以使用新int變數將用戶輸入存盤在其中,然后將位元組存盤在char變數中。當嘗試獲取存盤的整數時,將其轉換為int:
char coeff[20];
char expo[20];
for (int i = 0; i < Size; i ) {
int x = 0;
cin>>x;
coeff[i] = (char) x;
cout<<(int) coeff[0];
}
uj5u.com熱心網友回復:
我建議直接使用 int 變數而不是 char 陣列。但是因為你必須為你的家庭作業做這件事,我找到了一種將資料輸入到 char 陣列中的方法:
istream& operator>> (istream& is, char char_array[INT_MAX]) // INT_MAX means the maximum value for an int
{
std::string s; is >> s;
if (s.size() > 20) s = s.substr(0, 20);
for (int i = 0; i < s.size(); i )
{
char_array[i] = s[i];
}
return is;
}
在這里,我多載了運算子 >> 以使用大小為 INT_MAX 的 char 陣列。
然后在你的 main 函式中,你可以簡單地說:
int main()
{
char char_array[20]{};
std::cin >> char_array;
for (int i = 0; i < sizeof(char_array); i )
{
std::cout << char_array[i];
}
}
就如此容易。另外根據您提交的代碼,請勿執行以下操作:
using namespace std;
...因為它被認為是不好的做法。我知道有比這更好的方法,但這只是我的想法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/425946.html
