String 我使用cin获取字符串输入,如下代码所示,它工作正常。还好吗? #包括 #包括 使用名称空间std; int main() {int n; chars[15]; cin>>n; cin>>s; 我对你在这里提出的问题有点困惑,但我注意到这里有些问题是可以解决的
是的,您编译的代码可以运行。但是,它可以改进。 当提示您向String 我使用cin获取字符串输入,如下代码所示,它工作正常。还好吗? #包括 #包括 使用名称空间std; int main() {int n; chars[15]; cin>>n; cin>>s; 我对你在这里提出的问题有点困惑,但我注意到这里有些问题是可以解决的,string,c++11,fgets,cin,gets,String,C++11,Fgets,Cin,Gets,是的,您编译的代码可以运行。但是,它可以改进。 当提示您向char数组输入某些内容时,您会注意到它将不接受空格。因此,如果我输入Jon Smith,输出将仅为Jon,其余字符串输入将被切断。要解决此问题,您需要调用getline()函数 各国: 从is中提取字符并将其存储到str中,直到找到定界字符delim(或换行符“\n”…) 这将允许您从输入中获取空白,并将整个输入放回字符串中 如果将此函数调用添加到第二个输入提示所在的代码中,并且要运行代码,则会注意到只会收到一次提示,然后程序将在第二个
char
数组输入某些内容时,您会注意到它将不接受空格。因此,如果我输入Jon Smith
,输出将仅为Jon
,其余字符串输入将被切断。要解决此问题,您需要调用getline()
函数
各国:
从is中提取字符并将其存储到str中,直到找到定界字符delim(或换行符“\n”…)
这将允许您从输入中获取空白,并将整个输入放回字符串中
如果将此函数调用添加到第二个输入提示所在的代码中,并且要运行代码,则会注意到只会收到一次提示,然后程序将在第二个提示执行之前完成运行。这是因为getline()
不会忽略前导空格字符,它会停止进一步读取,因为cin>
在它被视为换行符之前
要使getline()
与cin>
一起工作,必须在调用getline()
之前使用cin.ignore()
。下面是我编写的一些代码,用于进行此调整:
#include<iostream>
#include<stdio>
using namespace std;
int main()
{ int n;
char s[15];
cin>>n;
cin>>s;
cout<<n*2<<"\n";
cout<<s;
return 0;
}
//示例程序
#包括
#包括
使用名称空间std;
int main()
{
int n;
string s;//使用string允许我们使用getline()
coutn;
cin.ignore();//忽略前导换行符
coutSure.谢谢
// Example program
#include <iostream>
#include <string>
using namespace std;
int main()
{
int n;
string s; //using string allows us to use getline()
cout<<"Enter a number: "; //Let user know they are being prompt for number
cin>>n;
cin.ignore(); //ignore the leading newline
cout<<"Enter a string: "; //let user know being prompt for string
getline (cin,s);
cout<<n*2<<"\n";
cout<<s;
return 0;
}