std :: cin用空格input?

#include <string> string input; cin >> input; 

用户想要input“Hello World”。 但是在这两个词之间的空间里, cin失败了。 我怎样才能让整个Hello World cin

我实际上是用structs和cin.getline做这个似乎不工作。 这是我的代码:

 struct cd { string CDTitle[50]; string Artist[50]; int number_of_songs[50]; }; cin.getline(library.number_of_songs[libNumber], 250); 

这产生了一个错误。 有任何想法吗?

你必须使用cin.getline()

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

它不“失败”; 它只是停止阅读。 它把一个词汇记号看作一个“string”。

使用std::getline

 int main() { std::string name, title; std::cout << "Enter your name: "; std::getline(std::cin, name); std::cout << "Enter your favourite movie: "; std::getline(std::cin, title); std::cout << name << "'s favourite movie is " << title; } 

请注意,这与std::istream::getline ,它使用C风格的char缓冲区而不是std::string s。

更新

你编辑的问题与原文有些相似。

你正试图把int换成int ,而不是string或字符缓冲区。 stream的格式化操作只适用于operator<<operator>> 。 或者使用其中的一个(并根据多字input进行调整),或者使用getline和词法转换为事后的int

使用 :

 getline(cin, input); 

该函数可以在中find

 #include <string> 

你想在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 ++的方式

gets被删除在C + + 11。

[推荐]:你可以使用string.h getline(cin,name)或iostream本身的cin.getline(name,256) 。

 #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 } 

标准库提供一个名为ws的input函数,它从inputstream中消耗空白。 你可以像这样使用它:

 std::string s; std::getline(std::cin >> std::ws, s); 

这是一个老问题,但有人可以告诉我,如果我的解决scheme是不正确的:

 std::string s, temp; std::stringstream ss; while(std::cin>>temp){ ss<<temp; ss<<" "; } s = ss.str(); 
 int main(){ char name[20]; gets(name); } 

使用gets()采用空格的string(C中的char数组)。