#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);
这将产生一个错误。什么好主意吗?
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';
}