4

私がする必要があるのは、あなたのフルネームの入力文字列を 3 つの別々の名前に解析して、それぞれの最初のイニシャルを取得して印刷できるようにすることだけです。誰かが私を正しい方向に向けることができますか?

#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>
using namespace std;    
int main()
{
    string [parsed_output] = fullName.split(" ");
    string firstName = parsed_output[0];
    string middleName = parsed_ouput[1];
    string lastName = parsed_output[2];
    string fullName;
    char firstLetter = firstName[0];
    char middleLetter = middleName[0];
    char lastLetter = lastName[0];
    cout << "Enter your first name, middle name or initial, and last name separated by                              spaces: \n"; 
    cin >> fullName;

    cout << "Your initials are: " << firstLetter << middleLetter << lastLetter << '\n';
    cout << "Your name is: " << firstName << " " << middleName << " " << lastName << '\n';
return 0;
}
4

2 に答える 2

3

あなたは物事を複雑にしています。「parsed_output[0];」の意味は何ですか とにかく「fullName」?あなたはただ行うことができます:

#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>
using namespace std;    

int main()
{
  string firstName, middleName, lastName;
  cout << "Enter your first name, middle name or initial, and last name separated by                              spaces: \n"; 
  cin >> firstName >> middleName >> lastName;
  char firstLetter = firstName[0];
  char middleLetter = middleName[0];
  char lastLetter = lastName[0];
  cout << "Your initials are: " << firstLetter << middleLetter << lastLetter << '\n';
  cout << "Your name is: " << firstName << " " << middleName << " " << lastName << '\n';
  return 0;
}

全体のポイントstd::cinは、抽出演算子「>>」を使用してスペースで区切られたトークンへのストリームを取得することです。名、ミドルネーム、姓を手動で抽出する場合 (hasans の回答のように)、最初に文字列全体 (3 つの名前すべてと空白をリミッターとして含む文字列) が必要になります。スペースを含む入力を読み込むには、std::getline(std::cin, fullName)の代わりに使用します。これは、最初の末尾の空白が検出されるまで入力を抽出するstd::cinためです。std::cin

于 2013-11-04T12:27:16.323 に答える