duk*_*vin 129 c++ string space
#include <string>
std::string input;
std::cin >> input;
Run Code Online (Sandbox Code Playgroud)
用户想要输入"Hello World".但是cin在两个词之间的空间失败了.我怎样才能cin完全接受Hello World?
我实际上是用结构做这个,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);
Run Code Online (Sandbox Code Playgroud)
这会产生错误.有任何想法吗?
Lig*_*ica 190
它没有"失败"; 它只是停止阅读.它将词法标记视为"字符串".
用途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;
}
Run Code Online (Sandbox Code Playgroud)
请注意,这是不一样的std::istream::getline,这与C风格的作品char缓冲区,而不是std::string秒.
更新
您编辑的问题与原始问题几乎没有相似之处.
你试图getline进入int一个字符串或字符缓冲区.流的格式化操作仅适用于operator<<和operator>>.要么使用其中一个(并相应调整多字输入),要么使用getline和词法转换为int事后.
Pet*_*ete 94
你必须使用cin.getline():
char input[100];
cin.getline(input,sizeof(input));
Run Code Online (Sandbox Code Playgroud)
小智 24
使用 :
getline(cin, input);
Run Code Online (Sandbox Code Playgroud)
该功能可以在
#include <string>
Run Code Online (Sandbox Code Playgroud)
dev*_* gr 21
标准库提供了一个名为的输入函数ws,它从输入流中消耗空白.你可以像这样使用它:
std::string s;
std::getline(std::cin >> std::ws, s);
Run Code Online (Sandbox Code Playgroud)
Cod*_*ody 12
你想在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;
}
Run Code Online (Sandbox Code Playgroud)
从这里开始的例子.查看更多信息和示例.
C方式
您可以使用getscstdio(stdio.h in c) 中的函数:
#include<cstdio>
int main(){
char name[256];
gets(name); // for input
puts(name);// for printing
}
Run Code Online (Sandbox Code Playgroud)
C++ 方式
gets 在 c++11 中被删除。
[推荐]:您可以使用函数getline(CIN,名),这是在string.h
或cin.getline(名称,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
}
Run Code Online (Sandbox Code Playgroud)
如何从输入中读取字符串?
您可以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';
}
Run Code Online (Sandbox Code Playgroud)
请注意,没有明确的内存管理,也没有可能溢出的固定大小的缓冲区。如果你真的需要一整行(而不仅仅是一个词),你可以这样做:
#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';
}
Run Code Online (Sandbox Code Playgroud)