当我尝试输出字符串时,它不会在空格后输出文本。它应该询问学生姓名,然后在被问到时输出。这是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 :(得分:5)
您应该使用getline()
函数,而不是简单的cin
,cin
只能在空格之前获取字符串。
istream& getline ( istream& is, string& str, char delim );
istream& getline ( istream& is, string& str );
从is
中提取字符并将其存储到str
中,直到找到分隔符。
第一个函数版本的分隔符字符为delim
,第二个函数版本的分隔符字符为'\ n'(换行符)。如果到达文件末尾或者在输入操作期间发生其他错误,则提取也会停止。
如果找到分隔符,则将其提取并丢弃,即不存储分隔符,然后下一个输入操作将在其后开始。
答案 1 :(得分:4)
答案 2 :(得分:3)
另一种选择是使用像这样的std :: strings getline()函数
getline(cin, studname);
这将获得换行符的整行和条带。但是任何前导/尾随空格都在你的字符串中。
答案 3 :(得分:2)
cin
喜欢用空格分解,所以这就是为什么你只得到一个名字。可能,因为赋值告诉你要抓住名字和姓氏,你可能会认为它们会被空格分开。在这种情况下,您可以单独抓取它们,然后将它们连接起来:
string firstname = "default";
string lastname = "default";
cin >> firstname >> lastname;
return firstname + " " + lastname;
答案 4 :(得分:0)
要获得整行,您需要使用getline而不是&gt;&gt;:
getline(cin, myString);