私は、C++の学習を練習するための個人的な使い方のための小さなプログラムを作成しています。その機能のために、MLAの引用ジェネレータ(私は数十の引用を含む大きなペーパーを書いています)です。C++のstd :: cinオブジェクトのルールは何ですか?
私はクラスを理解していないか、メインの中の他の.cppファイルを使用していないので、私には気にしないでください。私は、引用の種類ごとに関数を書いています。私が時間を増やせば、再利用されたコードごとに関数に分解する可能性があります。
私の質問です:std :: cinオブジェクトはどのように機能しますか?私は現在、std :: cin >>でシングル・ワードとなる文字列を読み込み、getline(std :: cin、string)という文字列をスペースで読み込みます。私は正しい出力を得ていない。私はちょうどstd :: cinがどのように動作するのか知りたかったのですが、なぜ私は予期せずにいくつかの入力をスキップしてしまいました。(例えば、Webページを読み飛ばす代わりにスキップします。
void webCit()
{
std::cout << "Leave any unknowns blank.\n";
std::cout << "Author last name: ";
std::string lastName;
std::cin >> lastName;
if (lastName.size() != 0)
{
lastName = lastName + ", ";
}
std::cout << "Author first name: ";
std::string firstName;
std::cin >> firstName;
if (firstName.size() != 0)
{
firstName = firstName + ". ";
}
std::cout << "Article title: ";
std::string articleTitle;
getline(std::cin, articleTitle);
if (articleTitle.size() != 0)
{
articleTitle = "\"" + articleTitle + ".\" ";
}
std::cout << "Title of web page: ";
std::string pageTitle;
std::cin >> pageTitle;
if(pageTitle.size() != 0)
{
pageTitle = pageTitle + ". ";
}
std::cout << "Publication date: ";
std::string publicationDate;
getline(std::cin, publicationDate);
if(publicationDate.size() != 0)
{
publicationDate = publicationDate + ". ";
}
std::cout << "Web address: ";
std::string webAddress;
getline(std::cin, webAddress);
webAddress = "<" + webAddress + ">. ";
std::cout << "Date accessed: ";
std::string dateAccessed;
getline(std::cin, dateAccessed);
if(dateAccessed.size() != 0)
{
dateAccessed = dateAccessed + ". ";
}
std::string citation =
lastName + firstName + articleTitle + pageTitle + publicationDate + webAddress + dateAccessed;
std::cout << citation; //TEST; remove after
}
EDIT:あなたが見ることができるように、私の入力はスキップなっているので、I/O
Leave any unknowns blank.
Author last name: Hooked
Author first name: Jerbear
Article title: Title of web page: title
Publication date: Web address: www.win.com
Date accessed: 4/29/09
Hooked, Jerbear. Title. <www.win.com>. 4/29/09.
、何かが、間違って起こっています。
私はあなたがこれをやっている方法で明らかな問題は表示されません...コピーして、彼のプログラム、あなたが持っている正確な入力と出力? また、「using namespace std;」を入れることをおすすめします。 (通常はあなたの#includeの直後にある)トップで、std ::を何度も書く必要なしに "cin"と "cout"と言うことができます。しかし、もちろん、どちらにしても...必要はありません。 – MatrixFrog
I/Oを追加しました。 – jkeys
@MatrixFrog:私は 'std :: cinを使います。 std :: coutを使用します。 ...を使用するか、グローバルレベルではなく、それを使用する関数の中で 'using namespace std;'を使用します。 –