2011-11-09 16 views
3

文字列を出力しようとすると、スペースの後にテキストが出力されません。生徒の名前を尋ねて、尋ねられたら出力します。これはC++です。私は与えるべき情報はもうありませんが、この文章が掲載されるようにサイトで投稿することはできません。スペースを含む文字列を印刷する

/***************************************************/ 
/* Author:  Sam LaManna       */ 
/* Course:  CSC 135 Lisa Frye     */ 
/* Assignment: Program 4 Grade Average    */ 
/* Due Date: 10/10/11       */ 
/* Filename: program4.cpp      */ 
/* Purpose: Write a program that will process */ 
/*    students are their grades. It will */ 
/*    also read in 10 test scores and  */ 
/*    compute their average    */ 
/***************************************************/ 

#include <iostream>  //Basic input/output 
#include <iomanip>  //Manipulators 

using namespace std; 

string studname();  //Function declaration for getting students name 

int main() 
{ 
    string studentname = "a";  //Define Var for storing students name 

    studentname = studname(); //Store value from function for students name 

    cout << "\n" << "Student name is: " <<studentname << "\n" << "\n";  //String output test 

    return 0; 
} 

/***************************************************/ 
/* Name: studname         */ 
/* Description: Get student's first and last name */ 
/* Paramerters: N/A        */ 
/* Return Value: studname       */ 
/***************************************************/ 

string studname() 
{ 
    string studname = "default"; 


    cout << "Please enther the students name: "; 
    cin >> studname; 

    return studname; 
} 
+0

可能な複製:http://stackoverflow.com/questions/8052009/returning-a-string(同じ問題、別のコンテキスト) – IronMensan

答えて

3

あなたはあなたはとてもこの

string abc; 
cout<<"Enter Name"; 
getline(cin,abc); 
cout<<abc; 

Getline

2

cinは空白で物事を壊すのが好きなので、あなたが1つの名前だけを取得している理由です。おそらく、姓と名字を取得するように指示されているので、空白で区切られていると考えられます。

string firstname = "default"; 
string lastname = "default"; 

cin >> firstname >> lastname; 

return firstname + " " + lastname; 
3

別の方法としては、これは全体を取得します。この

getline(cin, studname); 

のようなのstd ::文字列のgetline()関数を使用することです。この場合は、あなただけそれらを連結、その後、別途の両方をつかむことができます行と改行のストリップ。しかし、先行/後続のスペースはあなたの文字列の中にあります。

0

行全体を取得するには、getlineの代わりに>>を使用したいと思うが:

getline(cin, myString); 
5

のようなのgetlineを使用することができなければなりません単純なcinではなくgetline()関数を使用してください。cinは空白の前に文字列を取得します。

isから
istream& getline (istream& is, string& str, char delim); 

istream& getline (istream& is, string& str); 

抽出文字はと区切り文字が見つかるまでstrにそれらを格納します。

区切り文字は、最初の関数バージョンではdelimで、2番目の関数バージョンでは「\ n」(改行文字)です。ファイルの終わりに達した場合、または入力操作中に他のエラーが発生した場合は、抽出も停止します。

区切り文字が見つかった場合は区切り文字が抽出され、破棄されます。つまり、区切り文字は格納されず、次の入力操作がその後に開始されます。

関連する問題