打印带空格的字符串

时间:2011-11-09 16:27:29

标签: c++

当我尝试输出字符串时,它不会在空格后输出文本。它应该询问学生姓名,然后在被问到时输出。这是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;
}

5 个答案:

答案 0 :(得分:5)

您应该使用getline()函数,而不是简单的cincin只能在空格之前获取字符串。

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

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

is中提取字符并将其存储到str中,直到找到分隔符。

第一个函数版本的分隔符字符为delim,第二个函数版本的分隔符字符为'\ n'(换行符)。如果到达文件末尾或者在输入操作期间发生其他错误,则提取也会停止。

如果找到分隔符,则将其提取并丢弃,即不存储分隔符,然后下一个输入操作将在其后开始。

答案 1 :(得分:4)

你可以像这样使用getline

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

Getline

答案 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);