#include <string>

std::string input;
std::cin >> input;

用户想要进入“Hello World”。但是cin在两个单词之间的空格处出错了。我怎样才能让他了解整个Hello World?

我实际上是用struct和cin来做的。Getline好像不能用。这是我的代码:

struct cd
{
    std::string CDTitle[50];
    std::string Artist[50];
    int number_of_songs[50];
};

std::cin.getline(library.number_of_songs[libNumber], 250);

这将产生一个错误。什么好主意吗?


当前回答

我宁愿使用以下方法来获取输入:

#include <iostream>
#include <string>

using namespace std;

int main(void) {
    string name;

    cout << "Hello, Input your name please: ";
    getline(cin, name);

    return 0;
}

它实际上非常容易使用,而不是为包含空格字符的字符串定义数组的总长度。

其他回答

你必须使用cin.getline():

char input[100];
cin.getline(input,sizeof(input));

你想在cin中使用.getline函数。

#include <iostream>
using namespace std;

int main () {
  char name[256], title[256];

  cout << "Enter your name: ";
  cin.getline (name,256);

  cout << "Enter your favourite movie: ";
  cin.getline (title,256);

  cout << name << "'s favourite movie is " << title;

  return 0;
}

举个例子。查看更多信息和示例。

c方式

你可以使用cstdio中的gets函数(c中的stdio.h):

#include<cstdio>
int main(){

char name[256];
gets(name); // for input
puts(name);// for printing 
}

c++的方式

在c++11中被移除。

[推荐]:可以使用string.h中的getline(cin,name) 或者gin .getline(name,256)它在iostream中。

#include<iostream>
#include<string>
using namespace std;
int main(){

char name1[256];
string name2;
cin.getline(name1,256); // for input
getline(cin,name2); // for input
cout<<name1<<"\n"<<name2;// for printing
}

如何从输入中读取字符串?

你可以用std::cin读取一个以空格结尾的单词,就像这样:

#include<iostream>
#include<string>
using namespace std;

int main()
{
    cout << "Please enter a word:\n";

    string s;
    cin>>s;

    cout << "You entered " << s << '\n';
}

注意,这里没有显式的内存管理,也没有可能溢出的固定大小的缓冲区。 如果你真的需要一整行(而不是一个单词),你可以这样做:

#include<iostream>
#include<string>
using namespace std;

int main()
{
    cout << "Please enter a line:\n";

    string s;
    getline(cin,s);

    cout << "You entered " << s << '\n';
}

我宁愿使用以下方法来获取输入:

#include <iostream>
#include <string>

using namespace std;

int main(void) {
    string name;

    cout << "Hello, Input your name please: ";
    getline(cin, name);

    return 0;
}

它实际上非常容易使用,而不是为包含空格字符的字符串定义数组的总长度。