次のコードは、文字列を整数配列に変換し、配列の合計を出力します。プログラムでstrを定義した場合(str = "1 2 3 4 5")は機能しますが、ユーザーがstrを入力した場合は機能しません。なぜこれが起こっているのか理解できないようで、フィードバックをお待ちしています!
#include <string>
#include<iostream>
using namespace std;
// Fucntion to convert a string to
// integer array
void convertStrtoArr(string str)
{
// get length of string str
int str_length = str.length();
// create an array with size as string
// length and initialize with 0
int arr[str_length] = { 0 };
int j = 0, i, sum = 0;
// Traverse the string
for (i = 0; str[i] != '\0'; i++) {
// if str[i] is ', ' then split
if (str[i] == ' ') {
// Increment j to point to next
// array location
j++;
}
else {
// subtract str[i] by 48 to convert it to int
// Generate number by multiplying 10 and adding
// (int)(str[i])
arr[j] = arr[j] * 10 + (str[i] - 48);
}
}
cout << "arr[] = ";
for (i = 0; i <= j; i++) {
cout << arr[i] << " ";
sum += arr[i]; // sum of array
}
// print sum of array
cout << "\nSum of array is = " << sum << endl;
}
// Driver code
int main()
{
string str;
cin >> str;
convertStrtoArr(str);
return 0;
}
>>
ストリームで使用すると、一度に1つの単語が読み取られます。したがって、文字列サイズは常に1のままであり、正しい結果が得られないため、文字列全体を読み取りたい場合は、以下のメソッドを使用してください。
cin.getline(str, sizeof str);
または、遊んでみてもこの方法を使用できます。
getline(cin, str);
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加