2011-11-09 182 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

你可以使用函數getline所以這樣

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

Getline

2

cin喜歡用空白,打破東西,所以這就是爲什麼你只得到一個名字。可能的是,由於作業要求您抓住名字和姓氏,因此您可能會認爲這些名稱會被空格分隔。在這種情況下,你可以抓住兩個分開,然後將它們連接起來:

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

cin >> firstname >> lastname; 

return firstname + " " + lastname; 
3

另一種方法是使用std ::字符串函數getline()函數這樣

getline(cin, studname); 

這將讓整個換行符和換行符。但是任何前導/尾隨空格都會出現在你的字符串中。

0

爲了讓整條生產線,你需要使用函數getline代替>>:

getline(cin, myString); 
5

你應該使用getline()函數,而不是簡單的cin,因爲cin只在空白符之前得到字符串。從is並將它們存儲到str

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

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

提取字符,直到一個分隔符是發現。

第一個函數版本的分隔字符爲delim,第二個爲'\ n'(換行符)。如果到達文件末尾或者在輸入操作期間發生其他錯誤,則提取也會停止。

如果找到分隔符,它將被提取並丟棄,即它不會被存儲,並且下一個輸入操作將在其後開始。